Python'da Nesne Yönelimli Programlama
Alex Yarosh
Content Quality Analyst @ DataCamp
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 + amountdef __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
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 + amountdef __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
set_salary()'i değiştirmek emp.salary = -100'ü engellemezimport 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
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
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ş
$$\text{\Large{Kullanıcıya yönelik: öznitelik gibi davranır}}$$
$$\text{\Large{Geliştiriciye yönelik: erişim kontrolü sağlar}}$$
→ @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