Python'da Kalıtım Türleri | Python Kalıtımı [Örnekle]

Yayınlanan: 2021-02-09

İçindekiler

Tanıtım

Temiz bir kod için verilen mücadele, tüm programcıların katıldığı bir savaştır. Ve bu savaş, uygun bir nesne yönelimli programlama kavramları zırhıyla fethedilebilir. OOP kavramlarının doğru kullanımı, kodun yeniden kullanılabilirliğini, okunabilirliğini, optimum zaman ve alan karmaşıklığını geliştirmemize yardımcı olur.

Python'da kodlama yapmak süper eğlencelidir. Çok sayıda kütüphane desteğine sahip, nesne yönelimli, GUI programlanabilirliği, onu tüm programlama dilleri arasında sıcak bir pasta haline getiriyor.

Kalıtım, en çok kullanılan nesne yönelimli özelliklerden biridir ve onu python'da uygulamak coşkulu bir iştir. O halde şimdi başlayalım!

Öncelikle kalıtımın tanımını anlayalım.

Miras

Kalıtım, başka bir sınıfın özelliklerini ve özelliklerini (değişkenler ve yöntemler) elde etme sürecidir. Bu hiyerarşik düzende, başka bir sınıfı miras alan sınıfa alt sınıf veya alt sınıf, diğer sınıf ise ana sınıf olarak adlandırılır.

Kalıtım, takip edilen hiyerarşiye ve ilgili üst sınıf ve alt sınıf sayısına göre kategorize edilir.

Beş tür miras vardır:

  1. Tek Kalıtım
  2. Çoklu Kalıtım
  3. Çok Düzeyli Kalıtım
  4. Hiyerarşik Kalıtım
  5. Hibrit Kalıtım

Tek Kalıtım

Bu tür kalıtım, bir alt sınıfın veya türetilmiş sınıfın üst sınıfın özelliklerini ve özelliklerini devralmasını sağlar, bu, kodun tekrarlanmasını önler ve kodun yeniden kullanılabilirliğini geliştirir.

#ebeveyn sınıfı
Yukarıdaki sınıf :
ben = 5
def fun1 (öz):
print( "Merhaba, ebeveyn sınıfındasınız" )

#alt sınıf
sınıf Aşağıda (Yukarıda):
ben = 10
def fun2 (öz):
print( "Merhaba, alt sınıftasınız" )

temp1=Aşağıda()
temp2=Üstte()
temp1.fun1()
temp1.fun2()
temp2.fun1()
yazdır(temp1.i)
yazdır(temp2.i)
#temp2.fun2()

Pekala, yukarıdaki kodu inceleyelim.

Yukarıdaki kodda "Yukarıda" ana sınıftır ve "Alt", ana sınıfı miras alan alt sınıftır. Python'da kalıtım uygulamak basit bir iştir, sadece alt sınıfın parantezleri içinde ebeveyn sınıf adını belirtmemiz yeterlidir. Hem ana sınıfın hem de alt sınıfın nesnelerini yaratıyoruz ve kalıtımla ilgili ilginç bir nokta geliyor. Bir alt sınıf, üst sınıfın yöntemlerine ve değişkenlerine erişebilir, ancak bunun tersi doğru değildir.

Dolayısıyla yukarıdaki kodda temp1 nesnesi hem fun1 hem de fun2 yöntemlerine erişebilirken temp2 nesnesi yalnızca fun1 yöntemine erişebilir. Benzer şekilde, aynı kural koddaki değişkenler için de geçerlidir. Ve bir üst sınıf nesnesinden bir alt sınıf yöntemine veya değişkenine erişmek bir hata verecektir. Koddaki son satır yorumsuzsa, bir hata verir.

Çoklu Kalıtım

Bu kalıtım, bir alt sınıfın birden fazla üst sınıftan miras almasını sağlar. Bu tür kalıtım, Java sınıfları tarafından desteklenmez, ancak python bu tür kalıtımı destekler. Farklı sınıflardan birden fazla özellik toplama gereksinimimiz varsa, bunun büyük bir avantajı vardır.

#ebeveyn sınıf 1
A sınıfı :
demo1= 0
def fun1 (öz):
yazdır(self.demo1)

#ebeveyn sınıf 2
B sınıfı :
demo2= 0
def fun2 (öz):
yazdır(self.demo2)

#çocuk sınıfı
C sınıfı (A, B):
def fun3 (öz):
print( “Merhaba, çocuk sınıfındasınız” )

# Ana kod
c = C()
c.demo1 = 10
c.demo2 = 5
c.fun3()
print( “ilk sayı : “ ,c.demo1)
print( “ikinci sayı : “ ,c.demo2)

Yukarıdaki kodda, “A”, “B” olmak üzere iki ebeveyn sınıfı oluşturduk. Python'daki kalıtımın sözdizimini takip ederek, hem “A” hem de “B” sınıflarını miras alan bir alt sınıf yarattık. Bir alt sınıfın üst sınıfın yöntemlerine ve değişkenlerine erişebileceği konusunda daha önce tartışıldığı gibi, “C” alt sınıfı, üst sınıfının yöntemlerine erişebilir.

Çok Düzeyli Kalıtım

Çok düzeyli kalıtımda, özelliklerin özelliklerinin aktarımı hiyerarşik olarak birden fazla sınıfa yapılır. Daha iyi bir görselleştirme elde etmek için, bunu torun ilişkisinin atası veya birden fazla seviyeli bir ağaçta kök-yaprak olarak düşünebiliriz.

#ebeveyn sınıf 1
sınıf araç :
tanımlı işleyiş (kendi kendine):
print( “taşıtlar ulaşım için kullanılır” )

#çocuk 1. sınıf
sınıf araba (araç):
def tekerlekler (kendi kendine):
print( “bir arabanın 4 tekerleği vardır” )

#çocuk 2. sınıf
elektrikli araba sınıfı (araba):
def uzmanlık (öz):
print( “elektrikli araba elektrikle çalışır” )

elektrik=elektrik_araba()
elektrik.uzmanlık()
elektrikli.tekerlekler()
elektrik.işlevsel()

Yukarıdaki kodu kuru bir şekilde çalıştırarak, bir sınıf “araç” yarattık, ardından sınıf aracını miras alan bir sınıf arabası yarattık. Şimdi "araç" bir üst sınıf ve "araba" bir alt sınıftır. Daha sonra bir “electric_car” sınıfı yarattık, şimdi araba sınıfı bir üst sınıf ve elektrikli araba sınıfı bir alt sınıf ve araç sınıfı ile elektrikli araba sınıfı arasındaki ilişki çok düzeyli mirastır.

Burada electric_car sınıfı hem araç hem de araba sınıfının yöntemlerine, değişkenlerine erişebilirken, araba sınıfı yalnızca araç sınıfının yöntemlerine, değişkenlerine erişebilir. Ve tartışıldığı gibi, ana sınıf aracı, alt sınıfın hiçbir yöntemine erişemez.

Hiyerarşik Kalıtım

Bu kalıtım, bir sınıfın birden fazla alt sınıf veya alt sınıf için bir üst sınıf olarak barındırılmasına izin verir. Bu, yöntemlerin işleyişini birden çok alt sınıfla paylaşma avantajı sağlar, dolayısıyla kod tekrarından kaçınır.

#ebeveyn sınıfı
sınıf Ebeveyn :
def fun1 (öz):
print( "Merhaba, ebeveyn sınıfındasınız" )

#çocuk 1. sınıf
sınıf çocuğu1 (Ebeveyn):
def fun2 (öz):
print( “Merhaba, 1. sınıf öğrencisisiniz” )

#çocuk 2. sınıf
sınıf çocuğu2 (Ebeveyn):
def fun3 (öz):
print( "Merhaba, 2. sınıfa gidiyorsunuz" )

#çocuk sınıf 3
sınıf çocuğu3 (Ebeveyn):
def fun4 (öz):
print( “Merhaba, 3. sınıfa gidiyorsunuz” )

# ana program
child_obj1 = child3()
child_obj2 = child2()
child_obj3 = child1()
child_obj1.fun1()
child_obj1.fun4()
child_obj2.fun1()
child_obj2.fun3()
child_obj3.fun1()
child_obj3.fun2()

Yukarıdaki kodda, tek bir ebeveyn sınıfımız ve aynı ebeveyn sınıfı miras alan birden çok alt sınıfımız var. Artık tüm alt sınıflar, üst sınıfın yöntemlerine ve değişkenlerine erişebilir. Bir “Üst” sınıf ve aynı “Üst” üst sınıfını miras alan “çocuk1”, “çocuk2”, “çocuk3” olmak üzere 3 alt sınıf oluşturduk.

Ödeme: Python Açık Kaynak Proje Fikirleri

Hibrit Kalıtım

Aynı kodda birden fazla türde kalıtım uygulanıyorsa, kalıtım hibrit kalıtım olarak adlandırılır. Bu özellik, kullanıcının kalıtım özelliğini en iyi şekilde kullanmasını sağlar. Bu, uygulamada birden çok mirasa ihtiyaç duyan bir kodun uygulanması gereksinimini karşılar.

a sınıfı:
def fun1(self):
print(“Merhaba, A sınıfındasınız”)sınıf B(A):
def fun2(kendi):
print(“Merhaba, B sınıfındasınız”)sınıf C(A):
def fun3(self):
print(“Merhaba, C sınıfındasınız”)sınıf D(C,A): #line 13
def fun4(self):
print(“Merhaba, D sınıfındasınız”)#ana program
referans = D()
ref.fun4()
ref.fun3()
ref.fun1()

Yukarıdaki kodda, birden fazla türde kalıtım uyguladığımızı görebiliriz. A, B, C sınıfları hiyerarşik kalıtımı uygular ve A, C, D sınıfları çok düzeyli kalıtımı uygular. Hayır, bu bireysel kalıtımların, ebeveyn sınıfın yöntemlerine ve değişkenlerine erişme konusunda kendi bireysel özellikleri vardır. Ayrıca dikkat edilmesi gereken bir nokta var.

Çok düzeyli kalıtımı uygularken “child_class(parent_class1, parent_class2)” gibi bir sözdizimini izleriz. Ancak "parent_class1" hiyerarşik olarak "parent_class2"nin üzerindeyse bu sözdizimi bir hata verecektir. Bu sözdizimini uygulamak istiyorsak, "parent_class1", "parent_class2"'den hiyerarşik olarak daha düşük bir seviyede olmalıdır. Örneğin yukarıdaki kodda, eğer 13. satırda D(A, C) sözdizimi sınıfı varsa, C sınıfı hiyerarşik olarak A sınıfından daha düşük olduğu için kod çalışmaz.

Dünyanın en iyi Üniversitelerinden veri bilimi derslerini öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.

Okuyun: Python Proje Fikirleri ve Konuları

Çözüm

Kalıtımın kullanımlarını ve ihtiyaçlarını inceledik ve mirasın tanımını anladık. Ayrıca, kalıtım türlerini inceledik ve her tür kalıtımın uygulama kodlarını ve açıklamalarını inceledik. Farklı kalıtım türlerinde değişkenlere ve metod erişimine ilişkin kuralları kavrar.

Artık python'daki farklı kalıtım türlerinin farkında olduğunuza göre, bunları uygulamayı ve kodunuzda kullanmayı deneyin. Kalıtımın doğru kullanımıyla kodunuzu optimize etmeyi deneyin.

Veri bilimi hakkında bilgi edinmek istiyorsanız, IIIT-B & upGrad'ın çalışan profesyoneller için oluşturulan ve 10'dan fazla vaka çalışması ve proje, uygulamalı uygulamalı atölye çalışmaları, endüstri uzmanlarıyla mentorluk sunan Veri Biliminde PG Diplomasına göz atın, 1- endüstri danışmanlarıyla bire bir, en iyi firmalarla 400+ saat öğrenim ve iş yardımı.

Çoklu kalıtım ve çok düzeyli kalıtım arasındaki fark nedir?

Birçok yeni başlayan programcı, çoğu zaman çoklu kalıtım ve çok düzeyli kalıtım arasında kafa karıştırır. Aşağıda, bu iki kalıtım türü arasındaki bazı önemli farklılıklar gösterilmektedir.
Çoklu Kalıtım -
1. Bir alt sınıf, özelliklerini ve özelliklerini birden fazla temel sınıftan miras aldığında, bu tür kalıtım Çoklu Kalıtım olarak bilinir.
2. Çoklu Kalıtımı anlamak oldukça karmaşık olabileceğinden yaygın olarak kullanılmaz.
3. Yalnızca iki sınıf düzeyi vardır: temel sınıf ve türetilmiş sınıf.
Çok Düzeyli Kalıtım
1. Bir alt sınıfın, özellikleri kendi temel sınıfından devraldığı ve bu özellikleri başka bir temel sınıftan devraldığı ve ilkini bir alt sınıf haline getirdiği kalıtım, Çok Düzeyli Kalıtım olarak bilinir.
2. Bu miras büyük amaçlara hizmet eder ve bu nedenle çok yaygın olarak kullanılır.
3. En az üç sınıf düzeyi vardır: temel sınıf, ara sınıf ve türetilmiş sınıf.

Hibrit Kalıtım hakkında ne anlıyorsunuz?

Hibrit Kalıtım, benzersiz bir miras türüdür. Adından da anlaşılacağı gibi yeni bir konsepte sahip olmaktan ziyade iki veya daha fazla tür kalıtımın birleşimidir. Örneğin, hem çoklu hem de çok düzeyli kalıtımı gösteren bir sınıf, hibrit kalıtımın bir örneğidir.

Python'daki erişim değiştiriciler hakkında ne biliyorsunuz?

Python'da aşağıda belirtilen 3 tür erişim değiştiricisi vardır:
1. Genel Erişim Değiştirici - Bir sınıfın Genel üyelerine programın herhangi bir bölümü tarafından erişilebilir. Python'da, veri üyelerinin veya üye işlevlerinin erişim belirteci belirtilmemişse, varsayılan olarak geneldir.
2. Korumalı Erişim Değiştirici - Bir veri üyesi veya üye işlevi korumalı olarak tanımlanmışsa, yalnızca o sınıfın türetilmiş sınıfları tarafından erişilebilir.
3. Özel Erişim Değiştirici - Özel erişim değiştiricisi, en güvenli erişim belirleyicisidir. Özel üyelere yalnızca tanımlandıkları sınıf içinde erişilebilir.