کلاس‌ها و اشیاء (class)

اصلاح شده

2026-07-25

کلاس چیست؟

  • کلاس (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) !