logo

Python Mirası

Kalıtım, nesne yönelimli paradigmanın önemli bir yönüdür. Kalıtım, programa kodun yeniden kullanılabilirliğini sağlar çünkü mevcut bir sınıfı sıfırdan oluşturmak yerine yeni bir sınıf oluşturmak için kullanabiliriz.

Kalıtımda, alt sınıf özellikleri edinir ve ana sınıfta tanımlanan tüm veri üyelerine ve işlevlere erişebilir. Bir alt sınıf aynı zamanda ana sınıfın işlevlerine özel uygulamasını da sağlayabilir. Öğreticinin bu bölümünde kalıtımı ayrıntılı olarak tartışacağız.

İlkbahar önyüklemesindeki ek açıklamalar

Python'da türetilmiş bir sınıf, türetilmiş sınıf adından sonra parantez içinde tabandan bahsederek temel sınıfı miras alabilir. Bir temel sınıfı türetilmiş sınıfa miras almak için aşağıdaki sözdizimini göz önünde bulundurun.

Python Mirası

Sözdizimi

 class derived-class(base class): 

Bir sınıf, parantez içinde hepsinden bahsederek birden fazla sınıfı miras alabilir. Aşağıdaki sözdizimini göz önünde bulundurun.

Sözdizimi

 class derive-class(, , ..... ): 

örnek 1

 class Animal: def speak(self): print('Animal Speaking') #child class Dog inherits the base class Animal class Dog(Animal): def bark(self): print('dog barking') d = Dog() d.bark() d.speak() 

Çıktı:

 dog barking Animal Speaking 

Python Çok Düzeyli miras

Diğer nesne yönelimli diller gibi python'da da çok düzeyli kalıtım mümkündür. Türetilmiş bir sınıf başka bir türetilmiş sınıfı devraldığında çok düzeyli miras arşivlenir. Python'da çok düzeyli mirasın arşivleneceği düzey sayısında herhangi bir sınırlama yoktur.

Python Mirası

Çok seviyeli mirasın sözdizimi aşağıda verilmiştir.

Sözdizimi

 class class1: class class2(class1): class class3(class2): . . 

Örnek

 class Animal: def speak(self): print('Animal Speaking') #The child class Dog inherits the base class Animal class Dog(Animal): def bark(self): print('dog barking') #The child class Dogchild inherits another child class Dog class DogChild(Dog): def eat(self): print('Eating bread...') d = DogChild() d.bark() d.speak() d.eat() 

Çıktı:

 dog barking Animal Speaking Eating bread... 

Python Çoklu kalıtım

Python bize alt sınıfta birden fazla temel sınıfı miras alma esnekliği sağlar.

Python Mirası

Çoklu kalıtım gerçekleştirmek için gereken sözdizimi aşağıda verilmiştir.

Sözdizimi

 class Base1: class Base2: . . . class BaseN: class Derived(Base1, Base2, ...... BaseN): 

Örnek

 class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(d.Summation(10,20)) print(d.Multiplication(10,20)) print(d.Divide(10,20)) 

Çıktı:

 30 200 0.5 

issubclass(sub,sup) yöntemi

issubclass(sub, sup) yöntemi, belirtilen sınıflar arasındaki ilişkileri kontrol etmek için kullanılır. Birinci sınıf ikinci sınıfın alt sınıfı ise true, aksi durumda false değerini döndürür.

Aşağıdaki örneği düşünün.

Örnek

 class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(issubclass(Derived,Calculation2)) print(issubclass(Calculation1,Calculation2)) 

Çıktı:

 True False 

Örnek (obj, sınıf) yöntemi

Nesneler ve sınıflar arasındaki ilişkiyi kontrol etmek için isinstance() yöntemi kullanılır. İlk parametre, yani obj, ikinci parametrenin, yani sınıfın örneği ise true değerini döndürür.

Java dizesinin değiştirilmesi

Aşağıdaki örneği düşünün.

Örnek

 class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(isinstance(d,Derived)) 

Çıktı:

 True 

Yöntemi Geçersiz Kılma

Çocuk sınıfımızda ebeveyn sınıfı yönteminin bazı özel uygulamalarını sağlayabiliriz. Ana sınıf yöntemi alt sınıfta belirli bir uygulamayla tanımlandığında, bu kavrama yöntem geçersiz kılma adı verilir. Alt sınıfta bir üst sınıf yönteminin farklı tanımının gerekli olduğu senaryoda, yöntem geçersiz kılma işlemi yapmamız gerekebilir.

Python'da yöntem geçersiz kılmayı gerçekleştirmek için aşağıdaki örneği göz önünde bulundurun.

Örnek

 class Animal: def speak(self): print('speaking') class Dog(Animal): def speak(self): print('Barking') d = Dog() d.speak() 

Çıktı:

 Barking 

Gerçek Hayat Yöntem geçersiz kılma örneği

 class Bank: def getroi(self): return 10; class SBI(Bank): def getroi(self): return 7; class ICICI(Bank): def getroi(self): return 8; b1 = Bank() b2 = SBI() b3 = ICICI() print('Bank Rate of interest:',b1.getroi()); print('SBI Rate of interest:',b2.getroi()); print('ICICI Rate of interest:',b3.getroi()); 

Çıktı:

 Bank Rate of interest: 10 SBI Rate of interest: 7 ICICI Rate of interest: 8 

Python'da veri soyutlama

Soyutlama, nesne yönelimli programlamanın önemli bir yönüdür. Python'da gizlenecek özniteliğin önüne çift alt çizgi (___) ekleyerek de veri gizleme işlemini gerçekleştirebiliriz. Bundan sonra öznitelik, nesne aracılığıyla sınıf dışında görünmez.

Aşağıdaki örneği düşünün.

Örnek

 class Employee: __count = 0; def __init__(self): Employee.__count = Employee.__count+1 def display(self): print('The number of employees',Employee.__count) emp = Employee() emp2 = Employee() try: print(emp.__count) finally: emp.display() 

Çıktı:

 The number of employees 2 AttributeError: 'Employee' object has no attribute '__count'