Dalam tutorial ini, Anda akan belajar tentang multiple inheritance dengan Python dan bagaimana menggunakannya dalam program Anda. Anda juga akan belajar tentang pewarisan multi-level dan urutan resolusi metode.
Python Multiple Inheritance
Sebuah kelas dapat diturunkan dari lebih dari satu kelas dasar dengan Python, mirip dengan C ++. Ini disebut warisan berganda.
Dalam multiple inheritance, fitur dari semua kelas dasar diwarisi ke dalam kelas turunan. Sintaks untuk multiple inheritance mirip dengan single inheritance.
Contoh
class Base1: pass class Base2: pass class MultiDerived(Base1, Base2): pass
Di sini, kelas MultiDerived berasal dari kelas Base1 dan Base2.

Kelas MultiDerived mewarisi dari kelas Base1 dan Base2.
Warisan Multilevel Python
Kita juga bisa mewarisi dari kelas turunan. Ini disebut pewarisan bertingkat. Ini bisa menjadi kedalaman berapa pun dengan Python.
Dalam pewarisan bertingkat, fitur kelas dasar dan kelas turunan diwarisi ke dalam kelas turunan baru.
Contoh dengan visualisasi yang sesuai diberikan di bawah ini.
class Base: pass class Derived1(Base): pass class Derived2(Derived1): pass
Di sini, kelas Derived1 diturunkan dari kelas Base, dan kelas Derived2 diturunkan dari kelas Derived1.

Metode Resolusi Urutan dengan Python
Setiap kelas dalam Python diturunkan dari object
kelas tersebut. Ini adalah tipe paling dasar dalam Python.
Jadi secara teknis, semua kelas lain, baik bawaan atau yang ditentukan pengguna, adalah kelas turunan dan semua objek adalah instance object
kelas.
# Output: True print(issubclass(list,object)) # Output: True print(isinstance(5.5,object)) # Output: True print(isinstance("Hello",object))
Dalam skenario multiple inheritance, setiap atribut tertentu dicari terlebih dahulu di kelas saat ini. Jika tidak ditemukan, pencarian dilanjutkan ke kelas induk secara mendalam-pertama, gaya kiri-kanan tanpa mencari kelas yang sama dua kali.
Jadi, dalam contoh di atas dari MultiDerived
kelas urutan pencarian ( MultiDerived
, Base1
, Base2
, object
). Urutan ini juga disebut linierisasi MultiDerived
kelas dan sekumpulan aturan yang digunakan untuk menemukan urutan ini disebut Method Resolution Order (MRO) .
MRO harus mencegah pemesanan prioritas lokal dan juga memberikan monotonisitas. Ini memastikan bahwa kelas selalu muncul di hadapan orang tuanya. Dalam kasus banyak orang tua, urutannya sama dengan tupel kelas dasar.
MRO kelas dapat dilihat sebagai __mro__
atribut atau mro()
metode. Yang pertama mengembalikan tupel sedangkan yang terakhir mengembalikan daftar.
>>> MultiDerived.__mro__ (, , , ) >>> MultiDerived.mro() (, , , )
Berikut adalah contoh multiple inheritance yang sedikit lebih kompleks dan visualisasinya bersama dengan MRO.

# Demonstration of MRO class X: pass class Y: pass class Z: pass class A(X, Y): pass class B(Y, Z): pass class M(B, A, Z): pass # Output: # (, , # , , # , , # ) print(M.mro())
Keluaran
(,,,,,,)
Untuk mengetahui algoritma sebenarnya tentang bagaimana MRO dihitung, kunjungi Diskusi di MRO.