متدهای جادویی (Magic Methods) در پایتون چیست؟
متدهای جادویی، متدهایی هستند که نامشان با دو علامت زیرخط (underscore) در ابتدا و انتها نوشته شده، مانند __init__ یا __str__. این متدها توسط پایتون به طور خودکار در موقعیتهای خاص اجرا میشوند و به شما امکان میدهند رفتارهای پیشفرض اشیاء را تغییر دهید یا کنترل کنید.
برای مثال، وقتی یک شیء جدید ساخته میشود، پایتون به طور خودکار متد __init__ را اجرا میکند تا مقداردهی اولیه انجام شود. وقتی شیء را با print() چاپ میکنیم، متد __str__ صدا زده میشود تا رشتهای قابل نمایش تولید کند.
چرا متدهای جادویی مهم هستند؟
این متدها باعث میشوند اشیاء ما رفتاری شبیه به انواع دادههای پایه (مثل اعداد و رشتهها) داشته باشند و بتوانند با عملگرها، توابع و ساختارهای پایتون به شکلی طبیعی کار کنند. بدون این متدها، شیءهای ما فقط داده خواهند داشت ولی هیچ رفتاری نخواهند داشت.
مثال ساده: متد __init__ و __str__
class Person:
def __init__(self, name):
# این متد وقتی شیء ساخته میشود اجرا میشود
self.name = name
def __str__(self):
# این متد وقتی شیء را چاپ میکنیم اجرا میشود
return f"Person: {self.name}"
p = Person("Ali")
print(p) # وقتی print اجرا میشود، __str__ فراخوانی میشود
در این مثال:
__init__مقدار اولیه برای ویژگیnameرا تنظیم میکند.__str__مشخص میکند وقتی شیءpچاپ میشود چه متنی نمایش داده شود.
چند متد جادویی مهم دیگر:
__add__(self, other): مشخص میکند وقتی دو شیء با + جمع زده شوند، چه اتفاقی بیفتد.__eq__(self, other): مشخص میکند چطور دو شیء با == مقایسه شوند.__len__(self): وقتیlen(obj)اجرا میشود، این متد فراخوانی میشود.__getitem__(self, key): وقتی شیء با ایندکس (مثلobj[key]) استفاده شود، این متد اجرا میشود.
با یادگیری متدهای جادویی، میتوانید اشیاء خود را هوشمندتر و کاربردیتر کنید و رفتار دلخواه را به آنها اضافه نمایید.