Python
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.
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.
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.
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.
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
Slot kelas Python adalah fitur yang tidak banyak diketahui oleh programmer. Di kelas slotted, kami secara eksplisit mendefinisikan bidang yang diizinkan untuk dimiliki oleh kelas kami menggunakan nama bidang ajaib __slots__ . Ini memiliki beberapa keuntungan: Objek yang dibuat dari kelas akan memak
Kelas data Python adalah kelas Python biasa yang memiliki @dataclass penghias. Ini khusus dibuat untuk menyimpan data. Sejak Python versi 3.7, Python menawarkan kelas data melalui modul bawaan yang disebut dataclass . Ada beberapa keunggulan dibandingkan kelas Python biasa yang akan kita jelajahi di
Dengan Python, kita dapat mengembalikan beberapa nilai sekaligus. Jelas, sebagian besar fungsi dalam Python mengembalikan nilai tunggal, biasanya hasil dari pekerjaan yang dilakukan oleh fungsi itu. Dalam artikel ini, Anda akan mempelajari bahwa Anda juga dapat mengembalikan beberapa nilai dengan Py
Warisan dapat didefinisikan sebagai proses di mana satu kelas memperoleh properti (metode dan bidang) dari yang lain. Dengan menggunakan pewarisan, informasi dibuat dapat dikelola dalam urutan hierarkis. Kelas yang mewarisi sifat-sifat orang lain dikenal sebagai subkelas (kelas turunan, kelas anak)