در پایتون، کلاس (Class) قالب یا نقشهای است برای ساخت اشیاء، و شیء (Object) یک نمونهٔ واقعی از آن کلاس است.
هر شیء میتواند ویژگی (Attribute) و متد (Method) داشته باشد.
🔹 ساخت یک کلاس ساده
class MyClass:
x = 10 # ویژگی (Attribute) کلاس
ایجاد یک شیء
obj = MyClass()
print(obj.x) # 10
اینجا
obj
یک شیء از کلاسMyClass
است.
🔹 سازنده (__init__
)
برای مقداردهی اولیهٔ اشیاء هنگام ساخت از متد ویژهٔ __init__
استفاده میکنیم.
class Person:
def __init__(self, name, age):
self.name = name # ویژگی نمونه
self.age = age
p1 = Person("Ali", 25)
print(p1.name, p1.age) # Ali 25
-
self
به شیء فعلی اشاره دارد. -
میتوان ویژگیها را برای هر شیء متفاوت تعریف کرد.
🔹 متدها (Methods)
توابعی که درون کلاس تعریف میشوند و روی شیء کار میکنند.
class Person:
def __init__(self, name):
self.name = name
def greet(self):
print(f"سلام، من {self.name} هستم.")
p1 = Person("Sara")
p1.greet() # سلام، من Sara هستم.
🔹 تغییر و حذف ویژگیها
p1.age = 30 # افزودن یا تغییر ویژگی
print(p1.age)
del p1.age # حذف ویژگی
# print(p1.age) # خطا
🔹 متدهای کلاس و استاتیک
-
متد کلاس (
classmethod@
) به خود کلاس (cls
) دسترسی دارد. -
متد استاتیک (
staticmethod@
) بدون نیاز به self یا cls عمل میکند.
class MathUtils:
@staticmethod
def add(a, b):
return a + b
print(MathUtils.add(3, 5)) # 8
🔹 چند شیء از یک کلاس
هر بار که از کلاس نمونه میسازید یک شیء مستقل ایجاد میشود.
p1 = Person("Ali")
p2 = Person("Reza")
print(p1.name) # Ali
print(p2.name) # Reza
🔹 کپسولهسازی ساده
میتوانید با underscore دسترسی مستقیم را محدود کنید:
class BankAccount:
def __init__(self, balance):
self._balance = balance # نیمهخصوصی (قراردادی)
def get_balance(self):
return self._balance
💡 تمرینهای پیشنهادی
-
کلاسی بنویس که مشخصات یک کتاب (عنوان، نویسنده) را نگه دارد و متدی برای نمایش اطلاعات کتاب داشته باشد.
-
کلاس
Rectangle
بساز که طول و عرض بگیرد و متدی برای محاسبهٔ مساحت ارائه کند. -
یک کلاس ماشین حساب بنویس که متدهای جمع، تفریق، ضرب و تقسیم داشته باشد.
✅ خلاصه
-
Class = طرح اولیهٔ ساخت شیء.
-
Object = نمونهٔ واقعی از کلاس.
-
میتوانید ویژگیها و متدهای مختلف تعریف کنید و از متدهای استاتیک یا کلاس برای رفتارهای عمومی بهره ببرید.