خصوصیات کلاس (Class Properties)
خصوصیت کلاس (Class Property) یعنی «متغیر (Variable) داخل کلاس». این متغیر برای هر شیء داده نگه می دارد. مثل کارنامه هر دانش آموز که نام و سنش را دارد. با نقطه گذاری به آن ها دسترسی می گیری.
ساخت خصوصیت در سازنده
در متد سازنده __init__ خصوصیت می سازیم و مقدار می دهیم.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("Emil", 36)
print(p1.name)
print(p1.age)
دسترسی با نقطه گذاری
با dot notation مقدار خصوصیت را می خوانیم یا چاپ می کنیم.
class Car:
def __init__(self, brand, model):
self.brand = brand
self.model = model
car1 = Car("Toyota", "Corolla")
print(car1.brand)
print(car1.model)
تغییر مقدار خصوصیت
می توانی مقدار خصوصیت را بعداً عوض کنی. مانند به روزرسانی سن.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("Tobias", 25)
print(p1.age)
p1.age = 26
print(p1.age)
حذف خصوصیت با del
با del می توانی یک خصوصیت را حذف کنی. سپس استفاده از آن خطا می دهد.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("Linus", 30)
del p1.age
print(p1.name)
# print(p1.age) # خطا می دهد
تفاوت «کلاسی» و «نمونه ای»
خصوصیتِ داخل __init__ مخصوص هر شیء است. اما خصوصیتِ بیرونِ متدها، کلاسی است و بین همه مشترک است.
class Person:
species = "Human"
def __init__(self, name):
self.name = name
p1 = Person("Emil")
p2 = Person("Tobias")
print(p1.name)
print(p2.name)
print(p1.species)
print(p2.species)
تغییر خصوصیت کلاسی
با تغییر مقدار روی خود کلاس، همه اشیا آن را می بینند.
class Person:
lastname = ""
def __init__(self, name):
self.name = name
p1 = Person("Linus")
p2 = Person("Emil")
Person.lastname = "Refsnes"
print(p1.lastname)
print(p2.lastname)
افزودن خصوصیت جدید به شیء
می توانی به یک شیء خاص خصوصیت تازه بدهی. این تغییر فقط برای همان شیء است.
class Person:
def __init__(self, name):
self.name = name
p1 = Person("Tobias")
p1.age = 25
p1.city = "Oslo"
print(p1.name)
print(p1.age)
print(p1.city)
نکته: افزودن خصوصیت روی یک شیء، آن را برای دیگر اشیا اضافه نمی کند.
گام های عملی
- کلاس بساز و در __init__ خصوصیت ها را مقداردهی کن.
- با نقطه گذاری به خصوصیت ها دسترسی بگیر.
- یکی را تغییر بده و خروجی را ببین.
- یک خصوصیت کلاسی بساز و تفاوت را بررسی کن.
مطالعه بعدی
برای ادامه، صفحه متدهای کلاس را ببین. همچنین برای مرور، کلاس ها/اشیا و پارامتر self را بررسی کن.
جمع بندی سریع
- خصوصیت یعنی داده داخل کلاس.
- نمونه ای مخصوص هر شیء است.
- کلاسی بین همه مشترک است.
- با del می توانی خصوصیت را حذف کنی.