Dalam tutorial ini, anda akan belajar mengenai pelbagai warisan di Python dan cara menggunakannya dalam program anda. Anda juga akan belajar mengenai pewarisan pelbagai peringkat dan urutan penyelesaian kaedah.
Python Multiple Inheritance
Kelas boleh berasal dari lebih dari satu kelas asas di Python, serupa dengan C ++. Ini dipanggil warisan berganda.
Dalam pelbagai warisan, ciri semua kelas asas diwarisi ke dalam kelas turunan. Sintaks untuk warisan berganda serupa dengan warisan tunggal.
Contohnya
class Base1: pass class Base2: pass class MultiDerived(Base1, Base2): pass
Di sini, kelas MultiDerived berasal dari kelas Base1 dan Base2.

Kelas MultiDerived mewarisi kedua-dua kelas Base1 dan Base2.
Python Multilevel Warisan
Kita juga boleh mewarisi dari kelas yang berasal. Ini dipanggil warisan bertingkat. Ini boleh menjadi kedalaman Python.
Dalam warisan bertingkat, ciri kelas asas dan kelas turunan diwarisi ke dalam kelas turunan baru.
Contoh dengan visualisasi yang sesuai diberikan di bawah.
class Base: pass class Derived1(Base): pass class Derived2(Derived1): pass
Di sini, kelas Derived1 berasal dari kelas Base, dan kelas Derived2 berasal dari kelas Derived1.

Perintah Penyelesaian Kaedah di Python
Setiap kelas di Python berasal dari object
kelas tersebut. Ia adalah jenis paling asas di Python.
Oleh itu secara teknikal, semua kelas lain, sama ada terbina dalam atau ditentukan pengguna, adalah kelas turunan dan semua objek adalah contoh object
kelas.
# Output: True print(issubclass(list,object)) # Output: True print(isinstance(5.5,object)) # Output: True print(isinstance("Hello",object))
Dalam senario warisan berganda, atribut yang ditentukan dicari terlebih dahulu di kelas semasa. Sekiranya tidak dijumpai, carian diteruskan ke kelas induk secara mendalam, pertama, kiri-kanan tanpa mencari kelas yang sama dua kali.
Jadi, dalam contoh di atas MultiDerived
kelas perintah penggeledahan itu ( MultiDerived
, Base1
, Base2
, object
). Urutan ini juga disebut linearization of MultiDerived
class dan set peraturan yang digunakan untuk mencari pesanan ini disebut Method Resolution Order (MRO) .
MRO mesti mengelakkan urutan keutamaan tempatan dan juga memberikan monotonik. Ini memastikan bahawa kelas selalu muncul di hadapan ibu bapa. Sekiranya terdapat banyak ibu bapa, pesanannya sama dengan tupel kelas asas.
MRO kelas boleh dilihat sebagai __mro__
atribut atau mro()
kaedah. Yang pertama mengembalikan tuple sementara yang kedua mengembalikan senarai.
>>> MultiDerived.__mro__ (, , , ) >>> MultiDerived.mro() (, , , )
Berikut adalah contoh warisan berganda yang 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())
Pengeluaran
(,,,,,)
Untuk mengetahui algoritma sebenar bagaimana MRO dikira, lawati Perbincangan mengenai MRO.