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

یکی از مباحث مهم شی گرایی در پایتون دو مبحث کلاس متود ( classmethod@ ) و استاتیک متود ( staticmethod@ ) هستش.

این دو اصل کاربرد های زیادی در شی گرایی دارند شاید بارها در فریمورک های مختلف و لایبری های مختلف و شاید تازه کار باشید و برای یادگیری این اولین سرچتون در گوگل باشه که میخواید در مورد این دو مبحث یاد بگیرید.

وقتی ما متودی رو در کلاسمون میسازیم برای اینکه بخوایم از اون متود در کلاسمون استفاده کنیم نیازه که اول یک شی جدید از اون کلاس بسازیم تا بتونیم از اون متود استفاده کنیم.

مثل نمونه زیر :


ولی با استفاده از classmethod@ ما میتونیم بدون نیاز به ساخت یک آبجکت جدید به متودی که درون اون کلاس ساختیم دسترسی داشته باشیم و ازش استفاده بکنیم. برای این منظور باید در بالای متودمون از کلمه کلیدی classmethod@ استفاده کنیم. و درون پارامتر این این کلاس نیازه که به جای self ما از کلمه cls استفاده بکنیم که خلاصه کلمه class هستش و یک قرارداده. این cls چیه؟

این پارامتر نمایندگی میکنه از کلاس ما، ما با استفاده از این پارامتر میتونیم یک instance جدید از کلاسمون ایجاد کنیم تا باهاش کارهای مختلفی رو انجام بدیم. ساختار اولیه کلاس متود رو مشاهده کنید :

استفاده از پارامتر cls برای ساخت شئی :

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

Staticmethod@

استاتیک متود یک تفاوت خیلی جزئی با کلاس متود داره که از اسم این دکوریتور هم معلومه. استاتیکه و داینامیک نیستش یعنی مثل کلاس متود ما نمیتونیم یک شئی جدید برای خودمون بسازیم. و فقط یکسری استفاده های استاتیک و یکسان میتونیم در کلاسمون داشته باشیم. بریم نحوه استفاده و مثالی ازش رو ببینیم:


ما یک کلاسی داریم از یک ماشین که پراپرتی هایی از اسم ماشین و رنگ ماشین رو داره. حالا ما یک متود جانبی که یک کار مشخصی رو انجام میده رو داریم که برای معلوم میکنه که با توجه به سنی که داریم آیا میتونیم رانندگی بکنیم یا خیر. یک کار مشخص با یک خروجی مشخص.

خیلی ممنون که تا اینجا همراه من بودید.

امیدوارم از این مقاله چیزی یادگرفته باشید.

معذرت میخوام اگر کمی و کاستی درون این مقاله بود.

دوستون دارم. علیرضا فاضلی

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

ارسال دیدگاه