در پایتون، MRO از پایین به بالا و از چپ به راست است. این بدان معنی است که ابتدا متد در کلاس شی جستجو می شود. اگر پیدا نشد، در کلاس فوقالعاده فوری جستجو میشود. در مورد چندین کلاس فوق العاده، به ترتیبی که توسط توسعه دهنده اعلام شده است، از چپ به راست جستجو می شود. مثلا:
def class C(B, A)
Note: We are using Python 3.10.4 in this Answer.
در این مورد، MRO C -> B -> A خواهد بود. از آنجایی که B ابتدا در اعلان کلاس ذکر شد، ابتدا در هنگام حل یک متد جستجو می شود.
بیایید به چند مورد، از ساده تا پیچیده، نگاه کنیم.
این یک مورد ساده با ارث واحد است. در این مورد، وقتی b.method() فراخوانی می شود، ابتدا متد را در کلاس B جستجو می کند. در این مورد، کلاس B متد را تعریف کرده بود. از این رو، آن است که اعدام شد. در صورتی که در B وجود نداشته باشد، متد از کلاس فوق العاده آن (A) فراخوانی می شود. بنابراین، MRO برای این مورد: B -> است
MRO برای این می تواند کمی مشکل باشد. سوپرکلاس فوری برای D C است، بنابراین اگر متد در D یافت نشد، در C جستجو می شود. اما اگر در C یافت نشد، باید تصمیم بگیرید که آیا باید A را بررسی کنید (اول در اعلان شده است). لیستی از کلاس های فوق العاده C) یا علامت B (در لیست فوق کلاس های D بعد از C اعلام شده است). در پایتون 3 به بعد، با بررسی اول A حل می شود. بنابراین، MRO تبدیل به: