Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Python

Warisan Berganda Python

Python Multiple Inheritance

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 penyelesaian metode.

Python Multiple Inheritance

Kelas dapat diturunkan dari lebih dari satu kelas dasar di Python, mirip dengan C++. Ini disebut pewarisan berganda.

Dalam pewarisan berganda, fitur dari semua kelas dasar diwarisi ke dalam kelas turunan. Sintaks untuk pewarisan berganda mirip dengan pewarisan tunggal.

Contoh

class Base1:
    pass

class Base2:
    pass

class MultiDerived(Base1, Base2):
    pass

Di sini, MultiDerived kelas diturunkan dari Base1 dan Base2 kelas.

Berbagai Turunan kelas mewarisi dari keduanya Base1 dan Base2 kelas.


Warisan Multilevel Python

Kita juga dapat mewarisi dari kelas turunan. Ini disebut pewarisan bertingkat. Ini bisa menjadi kedalaman apa pun dengan Python.

Dalam pewarisan bertingkat, fitur dari kelas dasar dan kelas turunan diwarisi ke dalam kelas turunan yang baru.

Contoh dengan visualisasi yang sesuai diberikan di bawah ini.

class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass

Di sini, Derived1 kelas diturunkan dari Base kelas, dan Derived2 kelas diturunkan dari Derived1 kelas.


Urutan Resolusi Metode dengan Python

Setiap kelas dalam Python diturunkan dari object kelas. Ini adalah tipe paling dasar dalam Python.

Jadi secara teknis, semua kelas lain, baik built-in atau yang ditentukan pengguna, adalah kelas turunan dan semua objek adalah turunan dari object kelas.

# Output: True
print(issubclass(list,object))

# Output: True
print(isinstance(5.5,object))

# Output: True
print(isinstance("Hello",object))

Dalam skenario pewarisan berganda, atribut apa pun yang ditentukan pertama kali dicari di kelas saat ini. Jika tidak ditemukan, pencarian dilanjutkan ke kelas induk secara mendalam-pertama, kiri-kanan tanpa mencari kelas yang sama dua kali.

Jadi, pada contoh di atas MultiDerived kelas urutan pencarian adalah [MultiDerived , Base1 , Base2 , object ]. Urutan ini juga disebut linearisasi MultiDerived kelas dan kumpulan 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 sebelum 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 sebuah tuple sementara yang kedua mengembalikan sebuah daftar.

>>> MultiDerived.__mro__
(<class '__main__.MultiDerived'>,
 <class '__main__.Base1'>,
 <class '__main__.Base2'>,
 <class 'object'>)

>>> MultiDerived.mro()
[<class '__main__.MultiDerived'>,
 <class '__main__.Base1'>,
 <class '__main__.Base2'>,
 <class 'object'>]

Berikut adalah contoh pewarisan berganda 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:
# [<class '__main__.M'>, <class '__main__.B'>,
#  <class '__main__.A'>, <class '__main__.X'>,
#  <class '__main__.Y'>, <class '__main__.Z'>,
#  <class 'object'>]

print(M.mro())

Keluaran

[<class '__main__.M'>, <class '__main__.B'>, <class '__main__.A'>, <class '__main__.X'>, <class '__main__.Y'>, <class '__main__.Z'>, <class 'object'>]

Untuk mengetahui algoritme aktual tentang cara penghitungan MRO, kunjungi Diskusi tentang MRO.


Python

  1. Tipe Data Python
  2. Operator Python
  3. Pernyataan lulus python
  4. Kamus Python
  5. Pengecualian Kustom Python
  6. Pemrograman Berorientasi Objek Python
  7. Warisan Python
  8. type() dan isinstance() dengan Python dengan Contoh
  9. C# - Warisan
  10. Python - Berorientasi Objek