Press "Enter" to skip to content

Python Kalıtım Inheritance

Yaşar SAFALI 0

Python Kalıtım Inheritance

Bu yazımızda Nesne Yönelimli Programlama‘nın temel ilkelerinden biri olan Kalıtım (Inheritance) konusuna değineceğiz. Python Kalıtım Inheritance, sınıfların başka bir sınıftan miras alması demektir.Bu miras alma içerisinde o sınıfın özellikleri,tanımlanmış metotları yer alır.Günümüzdeki kalıtım ile aynı mantıkta çalışır.Çocuğun anne veya babadan kalıtım alması gibi.

Kalıtımda miras alınan sınıf temel sınıftır.Miras alan sınıf ise alt sınıf olarak tanımlanır.

Programcılar bir uygulama geliştirirken farklı farklı sınıflar için aynı özellikleri,metotları tanımlamak zorunda kalabilirler.Inheritance bu noktada programcıların işini kolaylaştırıp tekrarı önler.Örneğin bir Mühendis sınıfınız olsun ve bu sınıfın üyelerinin adı,soyadı,maaşı gibi özellikleri olduğunu düşünün.Bir diğer sınıfınız da Bilgisayar Mühendisleri sınıfı olsun.Bu sınıfın üyelerininde adı,soyadı,maaşı gibi özellikleri olsun.Aynı mantıkla Makine Mühendisleri,İnşaat Mühendisleri gibi sınıflarınızında olduğunu düşünelim.Bütün bu özellikleri her sınıf için oluşturmanız gerekecektir.Buda programcının aynı kodu defalarca yazması demektir.İşte inheritance bu noktada şöyle bir çözüm üretir.

Ortak olan özellikleri Mühendis sınıfında tanımla,diğer  sınıfların kendine ait özelliklerini ise kendi sınıflarında tasarla.Son olarak diğer sınıflar Mühendis sınıfından kalıtım alsın.Mühendis sınıfının özelliklerini,metotlarını kullanabilsin.

Burada miras alınan temel sınıf Mühendisler,miras alan alt sınıflar ise Bilgisayar Mühendisleri,Makine Mühendisleri,İnşaat Mühendisleri gibi.

Şimdi söz olarak ifade ettiklerimizi koda dökelim.

class Muhendisler:

    def __init__(self,isim,soyisim,maas):
        self.isim=isim
        self.soyisim=soyisim
        self.maas=maas


    def BilgileriYaz(self):
        print(self.isim)
        print(self.soyisim)
        print(self.maas)

Mühendisler Sınıfımızı oluşturduk.Diğer sınıflarda ortak olmasını düşündüğümüz özellikleri ve fonksiyonları bu sınıfın içerisine yerleştirdik.

Şimdi Bilgisayar Mühendisleri ve Makine Mühendisleri sınıfımızı oluşturalım.

class BilgisayarMuhendisleri(Muhendisler):

    pass
class MakineMuhendisleri(Muhendisler):
    pass

Sınıflara şimdilik herhangi bir özellik veya fonksiyon eklemedik.Şimdi biraz syntax incelemesi yapalım.Python’da inheritance uygulanırken temel sınıfın ismi Alt sınıflara parametre şeklinde verilir.Şimdi bilgisayar mühendisleri sınıfından bir nesne türetelim.Bakalım mühendisler sınıfından kalıtım gerçekleşmiş mi?

class Muhendisler:

    def __init__(self,isim,soyisim,maas):
        self.isim=isim
        self.soyisim=soyisim
        self.maas=maas


    def BilgileriYaz(self):
        print(self.isim)
        print(self.soyisim)
        print(self.maas)

class BilgisayarMuhendisleri(Muhendisler):

    pass
class MakineMuhendisleri(Muhendisler):
    pass

bilmuh=BilgisayarMuhendisleri("yaşar","safalı",4000)
print(bilmuh.isim)
bilmuh.BilgileriYaz()

Output:

yaşar
yaşar
safalı
4000

Evet Mühendisler Sınıfından kalıtım alınmış.O sınıfa ait özellikleri ve fonksiyonları artık kullanabiliyoruz.

Overriding(iptal etme)

Overriding temel sınıftan miras alınan bir fonksiyonun aynı isimle miras alan alt sınıfta tekrar oluşturulmasıdır.Artık temel sınıftaki fonksiyon değil alt sınıfta tanımladığımız fonksiyon çalışacaktır.

class Muhendisler:

    def __init__(self,isim,soyisim,maas):
        self.isim=isim
        self.soyisim=soyisim
        self.maas=maas


    def BilgileriYaz(self):
        print(self.isim)
        print(self.soyisim)
        print(self.maas)

class BilgisayarMuhendisleri(Muhendisler):

    def BilgileriYaz(self):
        print(self.isim)
        print("Bilgisayar Mühendisleri sınıfındaki Override edilen Fonksiyon Çalıştı")

class MakineMuhendisleri(Muhendisler):
    def BilgileriYaz(self):
        print(self.isim)
        print("Makine Mühendisleri sınıfındaki Override edilen Fonksiyon Çalıştı")

bilmuh=BilgisayarMuhendisleri("yaşar","safalı",4000)
bilmuh.BilgileriYaz()
makinemuh=MakineMuhendisleri("ahmet","akın",3900)
makinemuh.BilgileriYaz()

Output:

yaşar
Bilgisayar Mühendisleri sınıfındaki Override edilen Fonksiyon Çalıştı
ahmet
Makine Mühendisleri sınıfındaki Override edilen Fonksiyon Çalıştı

Görüldüğü gibi temel sınıftan miras alınan  fonksiyon değil tekrar tanımlanan(override edilen) fonksiyon çalıştı.

Peki temel sınıftaki fonksiyonun içeriğini tamamen değiştirmek değilde üzerine ekleme yapmak istersek ne olacak?Bunun içinde Inheritance da yer alan super() deyimini kullanacağız.

super()

Super anahtar kelimesi Inheritance konusunda çok kullanılan bir ifadedir.Bu ifade temel sınıfta tanımlanan bir fonksiyonun içeriğine ekleme yapmaya yarar.Yani temel sınıftaki fonksiyonun çalışmasını sağlar.

Şimdi yukarıda yaptığımız override işlemini super() ifadesi ile tekrar yapalım.

from builtins import super


class Muhendisler:

    def __init__(self,isim,soyisim,maas):
        self.isim=isim
        self.soyisim=soyisim
        self.maas=maas


    def BilgileriYaz(self):
        print(self.isim)
        print(self.soyisim)
        print(self.maas)

class BilgisayarMuhendisleri(Muhendisler):

    def BilgileriYaz(self):
        super().BilgileriYaz()
        print("Bilgisayar Mühendisleri sınıfındaki Override edilen Fonksiyon Çalıştı")

class MakineMuhendisleri(Muhendisler):
    def BilgileriYaz(self):
        super().BilgileriYaz()
        print("Makine Mühendisleri sınıfındaki Override edilen Fonksiyon Çalıştı")

bilmuh=BilgisayarMuhendisleri("yaşar","safalı",4000)
bilmuh.BilgileriYaz()
makinemuh=MakineMuhendisleri("ahmet","akın",3900)
makinemuh.BilgileriYaz()

 

Output:

yaşar
safalı
4000
Bilgisayar Mühendisleri sınıfındaki Override edilen Fonksiyon Çalıştı

ahmet
akın
3900
Makine Mühendisleri sınıfındaki Override edilen Fonksiyon Çalıştı

Kalıtım alan alt sınıfların kendilerine ait metotları ve özellikleri olabilir.

from builtins import super


class Muhendisler:

    def __init__(self,isim,soyisim,maas):
        self.isim=isim
        self.soyisim=soyisim
        self.maas=maas


    def BilgileriYaz(self):
        print(self.isim)
        print(self.soyisim)
        print(self.maas)

class BilgisayarMuhendisleri(Muhendisler):

    def __init__(self,isim,soyisim,maas,unvan):
        super().__init__(isim,soyisim,maas)
        self.unvan=unvan

    def BilgileriYaz(self):
        print("Bilgisayar Mühendisleri sınıfındaki Override edilen Metot Çalıştı")
    def unvanyaz(self):
        print(self.unvan)

class MakineMuhendisleri(Muhendisler):

    def __init__(self,isim,soyisim,maas,birim):
        super().__init__(isim,soyisim,maas)
        self.birim=birim
    def BilgileriYaz(self):
        print("Makine Mühendisleri sınıfındaki Override edilen Metot Çalıştı")
    def birimyaz(self):
        print(self.birim)
bilmuh=BilgisayarMuhendisleri("yaşar","safalı",4000,"Kıdemli Mühendis")
bilmuh.unvanyaz()
makinemuh=MakineMuhendisleri("ahmet","akın",3900,"Isı")
makinemuh.birimyaz()

Output:

Kıdemli Mühendis
Isı

 

 

Python Kalıtım Inheritance ile ilgili anlatacaklarımız bu kadar.Bir sonraki yazımızda görüşmek dileğiyle.

ardahan escort

aydın escort

bodrum escort

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

bakırköy escort afyon escort afyon escort ağrı escort ardahan escort artvin escort aksaray escort amasya escort antalya escort alanya escort aydın escort balıkesir escort bandırma escort bayburt escort bartın escort batman escort bitlis escort bingöl escort bodrum escort bolu escort bursa escort çanakkale escort çerkezköy escort çorum escort düzce escort çeşme escort diyarbakır escort edirne escort erzincan escort erzurum escort erzurum escort elazığ escort eskişehir escort gaziantep escort giresun escort gümüşhane escort hatay escort hatay escort hakkari escort içel escort ığdır escort ısparta escort kars escort maraş escort kayseri escort karabük escort kıbrıs escort kırıkkale escort kırklareli escort kilis escort kırşehir escort konya escort kuşadası escort kütahya escort manisa escort manavgat escort marmaris escort mardin escort malatya escort mersin escort muğla escort muş escort nevşehir escort niğde escort ordu escort osmaniye escort rize escort samsun escort sakarya escort seyhan escort siirt escort sivas escort sinop escort şırnak escort şırnak escort tekirdağ escort trabzon escort tokat escort tunceli escort urfa escort uşak escort van escort yalova escort yozgat escort zonguldak escort izmit escort izmit escort izmit escort istanbul escort avcılar escort esenyurt escort mecidiyeköy escort şişli escort beylikdüzü escort halkalı escort kadıköy escort pendik escort istanbul escort kurtköy escort pendik escort beylikdüzü escort esenyurt escort escort bayan istanbul escort bayan escort escort bayan