کلاسها و اشیاء (class)
کلاس چیست؟
- کلاس (Class) = قالب/طرح برای ساخت اشیاء (Objects)
- شیء (Object) = نمونهای واقعی ساختهشده از یک کلاس
- کلیدواژه تعریف:
class
تعریف یک کلاس ساده
class Dog:
pass
d = Dog()
print(type(d))<class '__main__.Dog'>
متد سازنده — __init__
- هر بار که یک شیء ساخته میشه، این متد بهطور خودکار اجرا میشه
- برای مقداردهی اولیه ویژگیهای (attributes) شیء استفاده میشه
self: اشاره به خود شیء — همیشه اولین پارامتر متدهای کلاسه
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
d = Dog("Rex", 3)
print(d.name, d.age)Rex 3
متدها (رفتار اشیاء)
- توابعی که داخل کلاس تعریف میشن و روی دادههای شیء کار میکنن
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def bark(self):
print(f"{self.name} says: Woof!")
d = Dog("Rex", 3)
d.bark()Rex says: Woof!
ویژگیهای نمونه (Instance Attributes) در مقابل ویژگیهای کلاس (Class Attributes)
| نوع | تعلق داره به | مثال |
|---|---|---|
| Instance Attribute | هر شیء مقدار جدا داره | self.name |
| Class Attribute | مشترک بین همهی نمونهها | تعریف مستقیم داخل کلاس، بیرون __init__ |
class Dog:
species = "Canis familiaris" # class attribute
def __init__(self, name):
self.name = name # instance attribute
d1 = Dog("Rex")
d2 = Dog("Buddy")
print(d1.species, d2.species) # هر دو یکی
print(d1.name, d2.name) # جدا از همساخت چند شیء از یک کلاس
- هر شیء دادههای مستقل خودش رو داره، حتی اگه از یک کلاس ساخته شده باشن
d1 = Dog("Rex", 3)
d2 = Dog("Buddy", 5)نکته: تفاوت self با پارامترهای دیگه
selfبهطور خودکار توسط پایتون پاس داده میشه، لازم نیست هنگام فراخوانی متد صداش کنیم
d.bark() # نه d.bark(d) !