পাইথনে একটি ক্লাস একাধিক বেস ক্লাস থেকে ডেরাইভড হতে পারে। এটাকে মাল্টিপল ইনহেরিটেন্স বলা হয়।
মাল্টিপল ইনহেরিটেন্সে, সকল বেস ক্লাসের ফিচারগুলো ডেরাইভড ক্লাসে ইনহেরিট হয়। মাল্টিপল ইনহেরিটেন্সের সিনট্যাক্স সিঙ্গল ইনহেরিটেন্সের মতোই।
class Super1:
pass
class Super2:
pass
class MultiDerived(Super1, Super2):
pass
মাল্টিপল ইনহেরিটেন্স সিনেরিওতে, যেকোনো নির্দিষ্ট অ্যাট্রিবিউট প্রথমে কারেন্ট ক্লাসে সার্চ করা হয়। না পাওয়া গেলে, সার্চ প্যারেন্ট ক্লাসগুলোর মধ্যে ডেপথ-ফার্স্ট, লेफ্ট-রাইট ফ্যাশনে চালু থাকে, একই ক্লাস দুবার সার্চ না করে।
সুতরাং, উপরের MultiDerived ক্লাস উদাহরণে সার্চ অর্ডার হবে [MultiDerived, Super1, Super2, object]। এই অর্ডারটিকেও MultiDerived ক্লাসের লিনিয়ারাইজেশন বলা হয় এবং এই অর্ডার খুঁজে বের করার নিয়মগুলোকে Method Resolution Order (MRO) বলা হয়।
MRO নিশ্চিত করে যে একটি ক্লাস সবসময় তার প্যারেন্টের আগে থাকে এবং একাধিক প্যারেন্ট থাকলে অর্ডার বেস ক্লাসের টাপলের মতোই থাকে।
একটি ক্লাসের MRO কে __mro__ অ্যাট্রিবিউট বা mro() মেথড দিয়ে দেখা যায়। ফর্মারটি টাপল রিটার্ন করে এবং লেটারটি লিস্ট।
>>> MultiDerived.mro() [, , , ]