"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يختلف ترتيب تحليل الطريقة (MRO) في فئات النمط الجديد عن فئات النمط القديم ويحل تعارضات الميراث؟

كيف يختلف ترتيب تحليل الطريقة (MRO) في فئات النمط الجديد عن فئات النمط القديم ويحل تعارضات الميراث؟

تم النشر بتاريخ 2024-11-15
تصفح:272

How does Method Resolution Order (MRO) in New-Style Classes differ from Legacy-Style Classes and resolve inheritance conflicts?

ترتيب تحليل الطريقة (MRO) في فئات النمط الجديد

توضيح 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