LYTHON Telegram 72
آشنایی با 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



tgoop.com/lython/72
Create:
Last 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

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


Share with your friend now:
tgoop.com/lython/72

View MORE
Open in Telegram


Telegram News

Date: |

5Telegram Channel avatar size/dimensions Those being doxxed include outgoing Chief Executive Carrie Lam Cheng Yuet-ngor, Chung and police assistant commissioner Joe Chan Tung, who heads police's cyber security and technology crime bureau. Channel login must contain 5-32 characters Image: Telegram. Select: Settings – Manage Channel – Administrators – Add administrator. From your list of subscribers, select the correct user. A new window will appear on the screen. Check the rights you’re willing to give to your administrator.
from us


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