Miras
Önceki Sınıflar Sonraki
Miras
Tabii ki, miras alma desteği olmayan bir “sınıf” adına layık olmaz. Türetilmiş sınıf tanımının sözdizimi aşağıdaki gibidir:
class turemisSinifAdi(TemelSinifAdi):
    <deyim-1>
    .
    .
    .
    <deyim-N>
TemelSinifAdi ismi türetilmiş sınıfın tanımının bulunduğu etki alanında tanımlı olmalıdır. Temel sınıf adı yerine bir ifade kullanmak da mümkündür. Bu temel sınıf adı başka bir modül içinde tanımlı olduğunda yararlıdır:
class turemisSinifAdi(modulAdi.TemelSinifAdi):
Bir türetilmiş sınıf tanımının işletilmesi bir temel sınıf ile aynıdır. Bir sınıf nesnesi yaratıldığında temel sınıf hatırlanır. Bu özellik başvurularını çözümlemede kullanılır; başvuruda bulunulan öznitelik o sınıfta yok ise temel sınıfta aranır. Bu kural temel sınıfın kendisi de başka bir sınıftan türetildiyse ardışık olarak çağırılır.
Türetilmiş sınıftan nesne oluşturmanın özel bir tarafı yoktur: turetilmisSinifAdi() o sınıfın yeni bir nesnesini yaratır. Yöntem başvuruları şu şekilde çözümlenirler: ilgili sınıf özelliği, gerekirse temel sınıflar zinciri taranarak, aranır ve yöntem başvurusu geçerli ise bu bir işlev verir.
Türetilmiş sınıflar temel sınıflarının yöntemlerini bastırabilirler. Yöntemler aynı nesnenin diğer yöntemlerini çağırırken özel önceliklere sahip olmadıkları için aynı temel sınıfta tanımlı bir yöntemi çağıran temel sınıf yöntemi bunu bastıran bir türetilmiş sınıf yöntemini çağırmış olabilir. C++ programcıları için not: Tüm Python yöntemleri sanaldır (virtual).
Türetilmiş sınıftaki bir bastıran yöntem aslında temel sınıftaki yöntemin yerini almak yerine onu geliştirmek isteyebilir. Temel sınıf yöntemini doğrudan çağırmanın basit bir yolu vardır: temelSinifadi.yontemAdi(self, argumanlar). Bu bazen istemciler için de faydalıdır. Bunun sadece, temel sınıf, global etki alanı içine doğrudan yüklendiyse çalıştığına dikkat edin.
Çoklu Miras
Python çoklu miras almanın kıstlı bir şeklini destekler. Birçok temel sınıfı olan bir sınıf tanımı aşağıdaki gibidir:
class turemisSinifAdi(temel1, temel2, temel3):
    <ifade-1>
    .
    .
    .
    <ifade-N>
Burada sınıf özniteliği başvurularını çözümlemede kullanılan kuralı açıklamamız gerekiyor. Bir öznitelik turemisSinifAdi içinde bulunamazsa temel1 içinde sonra temel1'in temel sınıfları içerisinde ve burada da bulunamazsa temel2 içinde aranır vs.
Bazı kişilere temel1'den önce temel2 ve temel3 içinde arama yapmak daha doğal gelir. Bu temel1'in herhangi bir özniteliğinin temel1 içinde veya bunun temel sınıflarında tanımlanmış olup olmadığını bilmenizi gerektir ki temel2 içindeki isimler ile çakışmalardan kaçınabilesiniz.
Python'un kazara oluşan isim çakışmalarına karşı usule dayanması çoklu kalıtımın rasgele kullanımı programın bakımını yapan için bir kabus olduğu açıktır. Çoklu kalıtımın iyi bilinen bir problemi aynı temel sınıfa sahip iki sınıftan türetme yapmaktır. Bu durumda ne olduğunu anlamak kolaydır; ancak bunun ne işe yarayacağı pek açık değildir.
Önceki Üst Ana Başlık Sonraki
Bazı Açıklamalar Başlangıç Özel Değişkenler
Bir Linux Kitaplığı Sayfası