پیادهسازی Mixin در پایتون و اشتباهات رایج💻 چگونه یک Mixin بنویسیم؟
پایتون سنتکس اختصاصی برای Mixin ندارد و از ارثبری چندگانه (Multiple Inheritance) استفاده میکند.
class JSONMixin:
def to_json(self):
import json
return json.dumps(self.dict)
class User(JSONMixin):
def init(self, name, email):
self.name = name
self.email = email
user = User("Ali", "ali@example.com")
print(user.to_json())
در این مثال، User قابلیت تبدیل به JSON را از JSONMixin بدون پیچیدگی اضافه به ارث برده است.
⚙️
اهمیت ترتیب ارثبری و MROدر پایتون، ترتیب فراخوانی متدها توسط Method Resolution Order (MRO) تعیین میشود.
هنگام استفاده از Mixinها، همیشه Mixin را قبل از کلاس پایه اصلی در پرانتز قرار دهید:
class MyView(LoginRequiredMixin, View):
این کار باعث میشود متدهای Mixin در صورت نیاز، متدهای کلاس اصلی را Override کنند.
⚠️ ۳ اشتباه رایج هنگام استفاده از Mixin:
1️⃣ افراط در استفاده: اضافه کردن دهها Mixin به یک کلاس، خوانایی کد را از بین میبرد.
2️⃣ ترتیب نادرست در ارثبری: قرار دادن Mixin بعد از کلاس پایه اصلی میتواند عملکرد آن را مختل کند.
3️⃣ تعریف Variableهای تداخلدار: ایجاد متغیر در Mixin که با متغیرهای کلاس اصلی همنام باشند.
🌐 نمونههای واقعی در کتابخانههای معروف:
Django: کلاس LoginRequiredMixin برای احراز هویت ویوها.
Python Stdlib: کلاس socketserver.ThreadingMixIn برای افزودن قابلیت مالتیتردینگ.