انواع تابع کلاس در پایتون

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

متدهای نمونه (Instance Methods):

  • این نوع متدها بر روی نمونه‌های یک کلاس اعمال می‌شوند و معمولاً به خود نمونه به عنوان اولین آرگومان self دسترسی دارند.
  • فرض کنید یک کلاس Bank account داریم که دارای ویژگی‌هایی مانند (موجودی) است. اگر بخواهیم یک متد برای واریز پول داشته باشیم، این متد باید به موجودی همان حساب خاص دسترسی داشته باشد.پس ازین متد در اینجا استفاده میکنیم

متدهای کلاس (Class Methods):

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

فرض کنید می‌خواهیم تعداد کل حساب‌های بانکی که ایجاد شده‌اند را نگه داریم و یک متد برای دریافت این تعداد داشته باشیم.

متدهای ایستا (Static Methods):

  • این نوع متدها به هیچ نمونه یا کلاس خاصی مرتبط نیستند و نیازی به self یا cls ندارند. برای تعریف این متدها از دکوریتور @staticmethod استفاده می‌شود.

فرض کنید می‌خواهیم یک متد برای تبدیل ارز داشته باشیم که به ویژگی‌های خاصی از کلاس یا نمونه‌ها نیاز ندارد.

متدهای خاص (Special Methods):

  • این متدها به متدهای جادویی (magic methods) یا dunder methods (دو آندرلاین) نیز شناخته می‌شوند و برای تعریف رفتارهای خاص مثل مقداردهی اولیه، نمایش، و عملیات‌های ریاضی استفاده می‌شوند. مثلاً __str__,__init__,__add__
  • __init__: این متد برای مقداردهی اولیه به ویژگی‌های مالک و توازن استفاده می‌شود.
  • __str__: این متد برای ارائه نمایش متنی دوستانه از شیء استفاده می‌شود، مثلاً وقتی از پرینت حساب استفاده می‌کنید.
  • __repr__: این متد نیز برای نمایش متنی رسمی‌تر از شیء استفاده می‌شود که معمولاً برای توسعه‌دهندگان مفید است.
  • __add__: این متد برای جمع دو حساب بانکی استفاده می‌شود، به طوری که مالکین و موجودی‌های آنها با هم جمع می‌شوند.

هر یک از این انواع متدها کاربرد و موارد استفاده خاص خود را دارند