मैं कक्षा के समेत किसी दिए गए वर्ग के प्रत्यक्ष और अप्रत्यक्ष दोनों मूल वर्गों में पुन: प्रयास करने में सक्षम होना चाहता हूं। यह उस मामले में उपयोगी है जहां आपके पास मेटाक्लास है जो अपने सभी अड्डों के आंतरिक विकल्प वर्ग की जांच करता है।क्या बेस क्लास पर फिर से शुरू करने के लिए एक मानक फ़ंक्शन है?
def bases(cls):
yield cls
for direct_base in cls.__bases__:
for base in bases(direct_base):
yield base
मेरे लिए यह करने के लिए एक मानक समारोह है:
ऐसा करने के लिए, मैं निम्नलिखित लिखा?
इसमें पुरानी शैली के वर्गों के साथ काम नहीं करने का तर्क (तर्कसंगत) नुकसान है। 'inspect.getmro' रिटर्न' cls .__ mro__' अगर यह मौजूद है (जो यह नई शैली कक्षाओं पर है) और यदि यह नहीं है तो कस्टम खोज करता है। (मजेदार तथ्य: आप अधिकतम रिकर्सन गहराई की तुलना में अधिक कक्षाओं के साथ पुरानी स्टाइल क्लास पदानुक्रम बनाकर और 'गेट्रो' को कॉल करके एक रिकर्सन त्रुटि उत्पन्न कर सकते हैं) – aaronasterling