انواع متد ها در کلاس

  • مدرس : علی بیگدلی
  • تاریخ انتشار: 1404/05/12
  • تعداد بازدید: 24

انواع متدها در کلاس‌ های پایتون

در پایتون، سه نوع اصلی متد داریم که هر کدام کاربرد و نحوه استفاده خاص خود را دارند:

۱. Instance Method (متد نمونه)

این متدها معمول‌ترین نوع متدها هستند. همیشه اولین آرگومان آن‌ها self است که به نمونه (object) جاری کلاس اشاره می‌کند. این متدها می‌توانند به داده‌ها و ویژگی‌های آن نمونه دسترسی داشته باشند و آن‌ها را تغییر دهند.

class Person:
    def __init__(self, name):
        self.name = name
    
    def greet(self):
        print(f"Hello, my name is {self.name}")

p = Person("Ali")
p.greet()  # خروجی: Hello, my name is Ali
۲. Class Method (متد کلاس)

این متدها با دکوراتور @classmethod تعریف می‌شوند و اولین آرگومان آن‌ها cls است که به خود کلاس اشاره دارد (نه به نمونه‌ها). این متدها معمولا برای تغییر وضعیت کلی کلاس یا ساخت نمونه از روش‌های متفاوت استفاده می‌شوند.

class Person:
    population = 0

    def __init__(self, name):
        self.name = name
        Person.population += 1

    @classmethod
    def get_population(cls):
        return cls.population

p1 = Person("Ali")
p2 = Person("Sara")
print(Person.get_population())  # خروجی: 2
۳. Static Method (متد ایستا)

این متدها با دکوراتور @staticmethod تعریف می‌شوند و هیچ آرگومان پیش‌فرضی (نه self و نه cls) نمی‌گیرند. این متدها عملکردهایی مستقل از نمونه یا کلاس انجام می‌دهند، اما به دلایل سازمان‌دهی کد داخل کلاس قرار می‌گیرند.

class MathHelper:
    @staticmethod
    def add(x, y):
        return x + y

print(MathHelper.add(5, 3))  # خروجی: 8
۴. Property (ویژگی)

ویژگی‌ها به ما اجازه می‌دهند که متدهایی را مانند صفت‌های معمولی (attribute) بخوانیم یا مقداردهی کنیم. با استفاده از دکوراتور @property می‌توانیم دسترسی کنترل شده به داده‌های کلاس داشته باشیم و در عین حال رابط ساده‌ای برای کاربر فراهم کنیم.

class Person:
    def __init__(self, name, lastname):
        self._name = name
        self._lastname = lastname

    @property
    def fullname(self):
        return f"{self._name} {self._lastname}"

p = Person("Ali", "Ahmadi")
print(p.fullname)  # خروجی: Ali Ahmadi

در این مثال، fullname یک متد است که با @property به صورت یک ویژگی بدون نیاز به پرانتز فراخوانی می‌شود. این امکان باعث می‌شود داده‌ها به شکل مرتب و کنترل‌شده در دسترس باشند.

خلاصه تفاوت‌ها
نوع متد آرگومان اول دسترسی به کاربرد اصلی
Instance Method self ویژگی‌ها و داده‌های نمونه تعامل با داده‌های هر نمونه
Class Method cls ویژگی‌ها و داده‌های کلاس دسترسی و تغییر داده‌های کلی کلاس
Static Method ندارد ندارد (مستقل) عملکرد مستقل که به کلاس مربوط است
Property ندارد (فقط خواندن) ویژگی‌های داخلی کنترل شده دسترسی ساده و کنترل شده به داده‌ها

ثبت دیدگاه


نکته: آدرس ایمیل شما منتشر نخواهد شد

دیدگاه کاربران (0)


هیچ دیدگاهی ثبت نشده است. می‌توانید اولین نفر باشید.