Çoklu miras
- Python kursu
- Orta seviye
- Ders 10/116
- 4 dk
Çoklu mirası ve MRO'yu öğrenirsin.
Çoklu miras
Çoklu miras (multiple inheritance), bir sınıfın birden fazla ebeveynden miras almasıdır. Ebeveynler parantez içinde virgülle ayrılır.
Örnek: class C(A, B): pass. Burada C hem A hem B'den miras alır. Her iki ebeveynin metotları C örneğinde kullanılabilir. Aynı isimli metot varsa MRO sırası belirler.
MRO sırası
MRO (Method Resolution Order), Python'ın ebeveynleri arama sırasıdır. Çoklu mirasta soldan sağa doğru aranır. C.mro() ile sırayı görebilirsin.
Örnek: class C(A, B) için MRO [C, A, B, object] olur. Yani c.hello() önce C'de, sonra A'da, sonra B'de aranır. Elmas (diamond) kalıtımında C3 linearization tutarlı bir sıra üretir.
Uygulama Çoklu miraslı C sınıfı
A sınıfını tanımla; def hello(self): ve gövdede print("A") yaz. B sınıfını tanımla; def hello(self): ve gövdede print("B") yaz. Sonra class C(A, B): pass tanımla. c = C() ile örnek oluştur ve c.hello() çağrısı yap.
Başlangıç kodu
# A, B ve C sınıflarını tanımlaÖrnek çözüm
# A, B ve C sınıflarını tanımla
class A:
def hello(self):
print("A")
class B:
def hello(self):
print("B")
class C(A, B):
pass
c = C()
c.hello()Beklenen çıktı
A
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Hangisi çoklu miras tanımıdır?
- class C: pass
- class C(A, B): pass Doğru cevap
- class C extends A, B: pass
- class C(A): pass
Açıklama: Virgülle ayrılmış iki ebeveyn çoklu mirası gösterir.
2 Çoklu miras tanımını tamamla
class C(A, ____):
pass
class C(A, B):
pass
Açıklama: İkinci ebeveyn de virgülle eklenir.
3 Çoklu miras kavramlarını eşle
| Kavram | Anlamı |
|---|---|
class C(A, B) |
Çoklu miras |
C.mro() |
Arama sırası |
A, B |
Virgülle ebeveynler |