Özellikler

Python'da Nesne Yönelimli Programlama

Alex Yarosh

Content Quality Analyst @ DataCamp

Öznitelik değerlerini değiştirme

class Employee:
  def set_name(self, name):
    self.name = name 
  def set_salary(self, salary):
    self.salary = salary 
  def give_raise(self, amount):
    self.salary = self.salary + amount

def __init__(self, name, salary): self.name, self.salary = name, salary
emp = Employee("Miriam Azari", 35000)
# Nokta sözdizimi ve = kullanarak öznitelikleri değiştirin
emp.salary = emp.salary + 5000
Python'da Nesne Yönelimli Programlama

Öznitelik değerlerini değiştirme

class Employee:
  def set_name(self, name):
    self.name = name 
  def set_salary(self, salary):
    self.salary = salary 
  def give_raise(self, amount):
    self.salary = self.salary + amount

def __init__(self, name, salary): self.name, self.salary = name, salary
emp = Employee("Miriam Azari", 35000)
# Nokta sözdizimi ve = kullanarak öznitelikleri değiştirin
emp.salary = emp.salary + 5000

 

 

Öznitelik erişimini kontrol etme?

  • değeri geçerlilik açısından kontrol et
  • veya öznitelikleri salt okunur yap
    • set_salary()'i değiştirmek emp.salary = -100'ü engellemez
Python'da Nesne Yönelimli Programlama

Kısıtlı ve salt okunur öznitelikler

import pandas as pd
df = pd.DataFrame({"colA": [1,2], "colB":[3,4]})
df
  colA colB
0    1    3
1    2    4
df.columns = ["new_colA", "new_colB"]
df
  new_colA  new_colB
0    1    3
1    2    4
# hata verecek
df.columns = ["new_colA", "new_colB", "extra"]
df
ValueError: Uzunluk uyuşmazlığı: 
Beklenen eksende 2 eleman var, 
yeni değerlerde 3 eleman var
df.shape = (43, 27)
df
AttributeError: öznitelik ayarlanamaz
Python'da Nesne Yönelimli Programlama

@property

class Employer:
  def __init__(self, name, new_salary):
     self._salary = new_salary


@property def salary(self): return self._salary
@salary.setter def salary(self, new_salary):
if new_salary < 0: raise ValueError("Geçersiz maaş") self._salary = new_salary

 

← Veriyi saklamak için _ ile başlayan "korumalı" öznitelik kullanın

← Kısıtlı özniteliğin adıyla aynı olan bir yönteme @property ekleyin; iç özniteliği döndürün

obj.attr = value çağrıldığında attr() yöntemine @attr.setter ekleyin

  • atanacak değer argüman olarak geçilir
Python'da Nesne Yönelimli Programlama

@property

class Employer:
  def __init__(self, name, new_salary):
     self._salary = new_salary


@property def salary(self): return self._salary
@salary.setter def salary(self, new_salary): if new_salary < 0: raise ValueError("Geçersiz maaş") self._salary = new_salary
emp = Employee("Miriam Azari", 35000)
# "property" erişimi
emp.salary
35000
emp.salary = 60000 # <-- @salary.setter
emp.salary = -1000
ValueError: Geçersiz maaş
Python'da Nesne Yönelimli Programlama

Neden @property kullanılır?

  $$\text{\Large{Kullanıcıya yönelik: öznitelik gibi davranır}}$$

 

$$\text{\Large{Geliştiriciye yönelik: erişim kontrolü sağlar}}$$

Python'da Nesne Yönelimli Programlama

Diğer olanaklar

@attr.setter eklemeyin

Salt okunur bir özellik oluşturun

@attr.getter ekleyin

Özelliğin değeri alındığında çağrılan yöntem için kullanılır

@attr.deleter ekleyin

Özelliğin del ile silindiğinde çağrılan yöntem için kullanılır

Python'da Nesne Yönelimli Programlama

Hadi pratik yapalım!

Python'da Nesne Yönelimli Programlama

Preparing Video For Download...