Python Çoklu Kalıtım
Bu öğreticide, Python’da çoklu kalıtımı ve bunu programınızda nasıl kullanacağınızı öğreneceksiniz. Ayrıca çok seviyeli kalıtım ve yöntem çözümleme sırası hakkında bilgi edineceksiniz.
Bir sınıf , C++’a benzer şekilde Python’da birden fazla temel sınıftan türetilebilir. Buna çoklu kalıtım denir.
Çoklu kalıtımda, tüm temel sınıfların özellikleri türetilmiş sınıfa miras alınır. Çoklu kalıtımın sözdizimi, tekli kalıtımınkine benzer.
Örnek
1 2 3 4 5 6 7 8 | class Base1: pass class Base2: pass class MultiDerived(Base1, Base2): pass |
Python Çok Düzeyli Kalıtım
Ayrıca türetilmiş bir sınıftan miras alabiliriz. Buna çok düzeyli kalıtım denir. Python’da çoklu sınıflaar herhangi bir derinlikte olabilir.
Çok düzeyli kalıtımda, temel sınıfın ve türetilmiş sınıfın özellikleri yeni türetilmiş sınıfa miras alınır.
Basit bir örnek aşağıda verilmiştir.
1 2 3 4 5 6 7 8 | class AnaSinif: pass class Kalitim1(AnaSinif): pass class Kalitim2(Kalitim1): pass |
Kalitim2 sınıfı: Kalitim1 ve AnaSinif özelliklerini de taşır.
Çoklu kalıtım senaryosunda, belirtilen herhangi bir öznitelik ilk olarak geçerli sınıfta aranır. Bulunamazsa, arama, aynı sınıfı iki kez aramayacak şekilde önce derinlik sonra da soldan sağa biçiminde üst sınıflarda devam eder. Bu sırayı bulmak için kullanılan kurallar kümesine Yöntem Çözünürlük Sırası (MRO) denir .
MRO, yerel öncelik sıralamasını önlemeli ve ayrıca monotonluk sağlamalıdır. Bir sınıfın her zaman ebeveynlerinin önünde görünmesini sağlar. Birden fazla ebeveyn olması durumunda sıra, temel sınıfların demetleri ile aynıdır.
Bir sınıfın MRO’su __mro__ veya mro() yöntemi ile görülebilir. Birinci yöntem bir demet döndürürken ikincisi bir liste döndürür.
1 2 3 4 5 6 7 8 9 10 11 | >>> Kalitim2.__mro__ (<class '__main__.Kalitim2'>, <class '__main__.Kalitim1'>, <class '__main__.AnaSinif'>, <class 'object'>) >>> Kalitim2.mro() [<class '__main__.Kalitim2'>, <class '__main__.Kalitim1'>, <class '__main__.AnaSinif'>, <class 'object'>] |