Class có thể kế thừa từ nhiều base class - gọi là multiple inheritance.
class Super1:
pass
class Super2:
pass
class MultiDerived(Super1, Super2):
pass
Trong kế thừa đa lớp, mọi thuộc tính được tìm kiếm theo thứ tự:
- Class hiện tại
- Các class cha theo chiều sâu, trái sang phải, không tìm cùng class hai lần
Ví dụ MultiDerived: thứ tự tìm kiếm [MultiDerived, Super1, Super2, object]. Thứ tự này gọi là linearization, quy tắc tìm thứ tự gọi là Method Resolution Order (MRO).
MRO đảm bảo: class luôn xuất hiện trước parent; với nhiều parent, thứ tự giống tuple base class.
Xem MRO
>>> MultiDerived.mro() [, , , ] >>> MultiDerived.__mro__ ( , , , )
__mro__ trả về tuple, mro() trả về list.