logo

Python-erfenis

Overerving is een belangrijk aspect van het objectgeoriënteerde paradigma. Overerving biedt codeherbruikbaarheid voor het programma, omdat we een bestaande klasse kunnen gebruiken om een ​​nieuwe klasse te maken in plaats van deze helemaal opnieuw te maken.

Bij overerving verkrijgt de onderliggende klasse de eigenschappen en heeft deze toegang tot alle gegevensleden en functies die in de bovenliggende klasse zijn gedefinieerd. Een kindklasse kan ook zijn specifieke implementatie bieden aan de functies van de ouderklasse. In dit gedeelte van de tutorial bespreken we overerving in detail.

is een relatie

In Python kan een afgeleide klasse de basisklasse erven door alleen de basis tussen haakjes achter de afgeleide klassenaam te vermelden. Overweeg de volgende syntaxis om een ​​basisklasse over te nemen in de afgeleide klasse.

Python-erfenis

Syntaxis

 class derived-class(base class): 

Een klasse kan meerdere klassen erven door ze allemaal binnen het haakje te vermelden. Beschouw de volgende syntaxis.

Syntaxis

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

voorbeeld 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() 

Uitgang:

 dog barking Animal Speaking 

Overerving op meerdere niveaus in Python

Overerving op meerdere niveaus is mogelijk in Python, net als andere objectgeoriënteerde talen. Overerving op meerdere niveaus wordt gearchiveerd wanneer een afgeleide klasse een andere afgeleide klasse overerft. Er is geen limiet op het aantal niveaus waartoe de overerving op meerdere niveaus in Python wordt gearchiveerd.

Python-erfenis

De syntaxis van overerving op meerdere niveaus wordt hieronder gegeven.

Syntaxis

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

Voorbeeld

 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() 

Uitgang:

 dog barking Animal Speaking Eating bread... 

Python Meervoudige overerving

Python biedt ons de flexibiliteit om meerdere basisklassen in de onderliggende klasse te erven.

Python-erfenis

De syntaxis voor het uitvoeren van meervoudige overerving wordt hieronder gegeven.

Syntaxis

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

Voorbeeld

 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)) 

Uitgang:

 30 200 0.5 

De issubclass(sub,sup)-methode

De methode issubclass(sub, sup) wordt gebruikt om de relaties tussen de opgegeven klassen te controleren. Het retourneert true als de eerste klasse de subklasse van de tweede klasse is, en false anders.

Beschouw het volgende voorbeeld.

Voorbeeld

 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)) 

Uitgang:

 True False 

De isinstance-methode (obj, klasse).

De isinstance()-methode wordt gebruikt om de relatie tussen de objecten en klassen te controleren. Het retourneert true als de eerste parameter, d.w.z. obj, de instantie is van de tweede parameter, d.w.z. klasse.

Beschouw het volgende voorbeeld.

Voorbeeld

 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)) 

Uitgang:

 True 

Methode overschrijven

We kunnen een specifieke implementatie van de ouderklassemethode in onze kindklasse bieden. Wanneer de bovenliggende klassemethode wordt gedefinieerd in de onderliggende klasse met een specifieke implementatie, wordt het concept methodeoverschrijving genoemd. Mogelijk moeten we methodeoverschrijvingen uitvoeren in het scenario waarin de andere definitie van een bovenliggende klassemethode nodig is in de onderliggende klasse.

Beschouw het volgende voorbeeld om methode-overschrijving uit te voeren in Python.

Voorbeeld

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

Uitgang:

vijay filmacteur
 Barking 

Voorbeeld uit de praktijk van het overschrijven van een methode

 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()); 

Uitgang:

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

Gegevensabstractie in Python

Abstractie is een belangrijk aspect van objectgeoriënteerd programmeren. In Python kunnen we ook gegevens verbergen door het dubbele onderstrepingsteken (___) als voorvoegsel toe te voegen aan het attribuut dat verborgen moet worden. Hierna zal het attribuut niet meer zichtbaar zijn buiten de klasse via het object.

Beschouw het volgende voorbeeld.

Voorbeeld

 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() 

Uitgang:

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