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.
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.
Ç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.
Ç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'