TG Telegram Group & Channel
روزمرگی های یک برنامه نویس | United States America (US)
Create: Update:

آشنایی با MRO در پایتون (Method Resolution Order)

MRO یا Method Resolution Order در پایتون ترتیب جستجوی کلاس‌های پایه رو برای فراخوانی متدها مشخص می‌کنه. این موضوع مخصوصاً توی وراثت چندگانه خیلی مهمه چون مشخص می‌کنه که وقتی یک متد فراخوانی می‌شه، پایتون از کدوم کلاس استفاده کنه.

🔎 چرا MRO مهمه؟
وقتی یک متد توی چند کلاس پایه (Parent Classes) وجود داشته باشه، پایتون از الگوریتم C3 Linearization استفاده می‌کنه تا ترتیب صحیح برای اجرای متدها رو پیدا کنه و از تداخل‌ها جلوگیری کنه.

🔧 نحوه بررسی MRO
میتونی MRO یک کلاس رو با متد mro() یا ویژگی __mro__ ببینی:

class MyClass:
pass

print(MyClass.mro())
# یا
print(MyClass.__mro__)


🔍 مثال ساده:
class A:
def method(self):
print("Method in A")

class B(A):
def method(self):
print("Method in B")

class C(B):
pass

c = C()
c.method() # خروجی: Method in B

print(C.mro())


📊 نتیجه MRO:
[<class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>]


👨‍💻 وراثت چندگانه:
در وراثت چندگانه، پایتون MRO رو به این ترتیب محاسبه می‌کنه:
class A:
def method(self):
print("Method in A")

class B(A):
def method(self):
print("Method in B")

class C(A):
def method(self):
print("Method in C")

class D(B, C):
pass

d = D()
d.method() # خروجی: Method in B

🔗 ترتیب MRO:
[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]


---

MRO یه مفهوم کلیدی برای مدیریت وراثت چندگانه در پایتونه که می‌تونه از تداخل‌ها جلوگیری کنه و کد رو تمیزتر کنه. برای یادگیری بیشتر، الگوریتم C3 Linearization رو بررسی کن!

@lython

آشنایی با MRO در پایتون (Method Resolution Order)

MRO یا Method Resolution Order در پایتون ترتیب جستجوی کلاس‌های پایه رو برای فراخوانی متدها مشخص می‌کنه. این موضوع مخصوصاً توی وراثت چندگانه خیلی مهمه چون مشخص می‌کنه که وقتی یک متد فراخوانی می‌شه، پایتون از کدوم کلاس استفاده کنه.

🔎 چرا MRO مهمه؟
وقتی یک متد توی چند کلاس پایه (Parent Classes) وجود داشته باشه، پایتون از الگوریتم C3 Linearization استفاده می‌کنه تا ترتیب صحیح برای اجرای متدها رو پیدا کنه و از تداخل‌ها جلوگیری کنه.

🔧 نحوه بررسی MRO
میتونی MRO یک کلاس رو با متد mro() یا ویژگی __mro__ ببینی:
class MyClass:
pass

print(MyClass.mro())
# یا
print(MyClass.__mro__)


🔍 مثال ساده:
class A:
def method(self):
print("Method in A")

class B(A):
def method(self):
print("Method in B")

class C(B):
pass

c = C()
c.method() # خروجی: Method in B

print(C.mro())


📊 نتیجه MRO:
[<class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>]


👨‍💻 وراثت چندگانه:
در وراثت چندگانه، پایتون MRO رو به این ترتیب محاسبه می‌کنه:
class A:
def method(self):
print("Method in A")

class B(A):
def method(self):
print("Method in B")

class C(A):
def method(self):
print("Method in C")

class D(B, C):
pass

d = D()
d.method() # خروجی: Method in B

🔗 ترتیب MRO:
[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]


---

MRO یه مفهوم کلیدی برای مدیریت وراثت چندگانه در پایتونه که می‌تونه از تداخل‌ها جلوگیری کنه و کد رو تمیزتر کنه. برای یادگیری بیشتر، الگوریتم C3 Linearization رو بررسی کن!

@lython
👍133


>>Click here to continue<<

روزمرگی های یک برنامه نویس




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)