# آموزش متدهای جادویی در پایتون
پایتون به صورت پیشفرض یکسری متد در اختیار شما قرار داده که هرکدام وظیفه انجام کاری رو دارند. شکل نامگذاری این متدها به شکل __<name>__ است، دو underscore قبل و دو underscore بعد از نام متد قرار میگیرد. این متدها رزرو شده توسط پایتون هستند که بر رفتار سطح بالای یک شی تأثیر میگذارند. این متدها با نامهای جادویی، خاص یا داندر(dunder) شناخته میشوند.
__init__ نمونه ای از یک متد خاص است که در زمان ایجاد شدن یک آبجکت از یک کلاس فراخوانی میشود. یا مثلا زمانی که بخواهید با عملگر + دو آبجکت را با هم جمع کنید، میتوانید از متد __add__ استفاده کنید. یادگیری استفاده از متدهای خاص ما را قادر می سازد تا کلاس های ظریف و قدرتمندی از اشیاء را طراحی کنیم.
+ متد __init__ پایتون
متد __init__ یکی از پرکاربردترین متدهای خاصی است که در پایتون وجود دارد. متد __init__ به شما اجازه میدهد در زمان ساخت آبجکت، مستقیما آرگومانها را به کلاس ارسال کنید:
class Car:
def __init__(self, name):
self.name = name
a = Car('benz')
print(a.name)
# OUTPUT
benz
+ متد __str__ پایتون
متد __str__ پایتون زمانی استفاده میشود که بخواهید یک آبجکت را مستقیما در دستور print چاپ کنید. مثلا در کد زیر یک کلاس به نام Car داریم و یک آبجکت از آن به نام a ساختهایم. اما زمانی که آبجکت a را ساختیم نتیجهای که به نشان میدهد، آنچنان مفید نیست:
class Car:
def __init__(self, name):
self.name = name
a = Car('benz')
print(a)
# OUTPUT
<__main__.Car object at 0x7fdbf01d9fd0>
اما با متد __str__ میتوانیم از رفتار را تغییر بدهیم:
class Car:
def __init__(self, name):
self.name = name
def __str__(self):
return self.name
a = Car('benz')
print(a)
# OUTPUT
benz
همانطور که در کد بالا میبینید، زمانی که آبجکت را چاپ کردیم، متد __str__ فعال شده و نتیجه را به ما نشان میدهد.
+ متدهای خاص دیگر پایتون
برای آشنایی بیشتر با متدهای خاص پایتون، در زیر لیست کاملی از این متدها را آوردهایم:
ویدیو آموزش متد__reversed__ پایتون
ویدیو آموزش متدهای __getattr__, __setattr__, __delattr__ در پایتون
ویدیو آموزش متدهای __getitem__, __setitem__, __delitem__ در پایتون
ویدیو آموزش __slots__ در پایتون
ویدیو آموزش متد __contains__ در پایتون
ویدیو آموزش متد __next__ , __iter__ در پایتون
ویدیو آموزش متدهای __lt__ و __le__ و __eq__ و __ne__ و __gt__ و __ge__ در پایتون
ویدیو آموزش متد __call__ در پایتون
ویدیو آموزش متد __name__ در پایتون
ویدیو آموزش متد __repr__ در پایتون
ارسال نظر