توضيح MRO في فئات النمط الجديد
على عكس القديم فئات النمط الجديد، تستكشف فئات النمط الجديد فئاتها الأساسية لإنشاء ترتيب تحليل الطريقة (MRO). يحدد هذا الترتيب التسلسل الذي يتم به البحث عن الأساليب عند استدعاء أسلوب ما على كائن ما.
]حل تعارضات الوراثة مع MRO
التمييز الرئيسي بين MRO في الجديد - تنشأ فئات النمط والنمط القديم عندما تظهر نفس فئة السلف عدة مرات في التسلسل الهرمي للميراث. على سبيل المثال، خذ بعين الاعتبار حالة وراثة الماس التالية:
class Base1(object):
def amethod(self):
print("Base1")
class Base2(Base1):
pass
class Base3(object):
def amethod(self):
print("Base3")
class Derived(Base2, Base3):
pass
MRO بالنمط القديم:
في الفئات ذات النمط القديم، سيكون ترتيب القرار هو D - B - A - C - A. هنا، عند استدعاء D .amethod()، يتم العثور على التعريف الموجود في A أولاً ويتجاوز التعريف الموجود في C.نمط جديد MRO:
بالنسبة للفصول الدراسية ذات النمط الجديد، يكون MRO كما يلي:D.__mro__
(<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>,
<class '__main__.A'>, <type 'object'>)
لاحظ أن A يظهر مرة واحدة فقط بهذا الترتيب، بعد كل فئاته الفرعية. وهذا يضمن أن تكون الأولوية للتجاوزات في الفئات الفرعية، مثل تجاوز طريقة C.
فهم أهمية MRO
يعمل MRO في فئات النمط الجديد على حل تعارضات الميراث بشكل معقول، مما يسمح للتجاوزات بالعمل بشكل صحيح. كما أنه يتجنب المواقف التي تظهر فيها تعريفات متعددة لنفس الطريقة في ترتيب الدقة، مما يؤدي إلى سلوك غامض. من خلال فهم MRO واستخدامه بشكل فعال، يمكن للمطورين تصميم تسلسلات هرمية قوية وقابلة للصيانة في بايثون.تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3