Python Multiple Inheritance (Çoklu Miras Alma)

Merhaba Arkadaşlar,
Mobilhanem.com da Python Eğitimi Serisinin bu dersinde önemli bir kavram olan Multiple Inheritance (Çoklu Miras Alma) dersi ile birlikteyiz. Bir önceki dersimizde nesne tabanlı programlamada önemli bir kavram olan Inheritance(Miras Alma) görmüştük. Bu derste ise Multiple Inheritance (Çoklu miras alma) nedir? Nasıl kullanılır ve avantajları nedir? Sorularına cevap verip örnek uygulamalar ile göstereceğiz.

Python Multiple Inheritance (Çoklu Miras Alma)

Bir önce ki dersimizde miras alma konusunu anlatırken bir sınıf başka bir sınıfın özellik ve işlevlerini alıyordu. Peki çoklu miras alma nedir? Çoklu miras alma bir sınıfın birden fazla sınıfın özelliklerini ve işlevlerini almasıdır.

Gerçek hayatta bir çocuğun hem anne hem de babasının özelliklerini taşıması gibi :)) hemen kodlamaya başlayalım, çok daha iyi anlayacaksınız.

Çıktıya bakalım hemen;

Gördüğünüz gibi birden fazla sınıfın fonksiyonunu aldık ve kullandık.

Ama çoklu fonksiyonlarda dikkat etmemiz gereken çok önemli bir nokta var aynı isimde sadece bir sınıf, bir özellik veya bir işlev(fonksiyon) kullanabiliyoruz hemen örnek verelim.

Hem Anne() sınıfı hem de Baba() isimli sınıfında goz_rengi() özelliği var.

Peki Cocuk() sınıfı hangi sınıfın özelliğini miras alacak hemen bakalım.

Tahmin ettiğimiz gibi anne sınıfının özelliklerini aldı. Çünkü ilk önce Anne() sınıfı özelliklerini miras aldı. Şimdi değiştirelim ve bu sefer Baba() sınıfını önce miras alalım.

ilk önce Baba() sınıfını miras aldık hemen çıktımıza bakalım.

Şimdi siz diyeceksiniz  ki ben aynı isimde niye fonksiyon oluşturayım ki ben farklı isimde fonksiyon oluşturacağım. Ama şunu unutmayın bir projede tek başınıza olmayabilirsiniz. Birden çok kişi ile çalıştığınızda bu gibi sorunlarla karşılaşabilirsiniz. Gelelim r __init__() yapıcı fonksiyonu her iki sınıfta varsa o zaman ne yapacağımız konusuna. Hemen gösterelim;

Gördüğünüz gibi kodumuzu çalıştırdığımız zaman

Şeklinde bir çıktı aldık. Yani Baba() sınıfını ilk önce miras aldığımız için  Baba() sınıfının özelliğini öncelik aldı. Peki siz şimdi diyeceksiniz ki biz  yeri geldiğinde bu öncelik sırasını kendimiz değiştiremiyor muyuz? Elbette değiştirebilirsiniz nasıl mı hemen gösterelim.

Çoklu Miras Alma da Yapıcı Fonksiyon

Çıktıya bakalım;
Biz burada Anne() sınıfının __init__() fonksiyonunu öncelik aldık. Cümleye biraz dikkat ederseniz Anne() sınıfının bütün özellik ve işlevlerini değil sadece __init__() fonksiyonu aldık. Buradan nasıl bir bilgiye ulaşabiliriz. Hemen anlatayım biz Anne() sınıfının  __init__() fonksiyonunu öncelik verirken Baba() sınıfının da diğer bir fonksiyonunu öncelik verebiliriz.

Hemen bir örnekle gösterelim.

Çıktıya bakalım hemen

Gördüğünüz gibi çocuk göz rengi özelliğini Anne den alırken boy özelliğini Babadan aldı. Sebebi ise biz Baba() sınıfını önce yazdığımız için Baba() sınıfının boy() fonksiyonunu miras aldı.  Ama biz Anne() sınıfının __init__() fonksiyonunu öncelik olarak belirttiğimiz için Anne sınıfının __init__() fonksiyonunu öncelik olarak miras aldı.

Eğer yine aynı şekilde Anne() sınıfının boy() fonksiyonuna öncelik verseydik Anne() sınıfının boy() fonksiyonu alırdı.

Hemen değiştirelim.

Çıktıya baktığımız  zaman her iki özelliği de Anne() sınıfından miras aldığını göreceksiniz.

Gördüğünüz gibi Baba() sınıfı ilk önce yazmamıza rağmen Anne() sınıfının özelliklerine öncelik verdiğimiz için Anne() sınıfının özelliklerini aldı.

Peki siz sormadan hemen ben sorayım miras almış bir sınıfı yani Cocuk() sınıfını biz başka bir sınıfta miras alabilir miyiz? Hemen bakalım;

Hemen çıktıya bakalım;

Gördüğünüz gibi Cocuk() sınıfını miras alabiliyoruz. Cocuk() sınıfının miras aldığı özellikleri aynı zaman da Torun() sınıfı içinde geçerli. Anne() sınıfının özelliklerini neden aldığını artık çok iyi bildiğinize inanıyorum.

Mobilhanem.com da Multiple Inheritance (Çoklu Miras Alma) dersinin  sonuna geldik bir sonraki yazıda görüşmek üzere eğer anlamadığınız eksik yer varsa Soru-Cevap kısmından veya dersin altında yorum kısmından çekinmeden iletişime geçebilirsiniz.

Tüm Python dersleri için buraya tıklayın.

0

Cahit İşleyen

Fırat Üniversitesi Yazılım Mühendisliği
Python ve Linux sever.
Çay tiryakisi

Yorum Yaz

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?