Python

Python-overerving

Python-overerving

De Python is een objectgeoriënteerde programmeertaal. In een objectgeoriënteerde programmeertaal maken we de klassen en voeren we de beoogde functionaliteit uit. Overerving is het fundamentele kenmerk van objectgeoriënteerde programmeertalen. Overerving kan worden gedefinieerd als het vermogen van een klasse om alle functies en eigenschappen van een andere klasse te erven. Overerving maakt het in wezen mogelijk om de eigenschappen van een bestaande klasse uit te breiden. Overerving wordt benut met de twee hoofdconcepten:

  1. Ouderklas of basisklas
  2. Kinderklasse of afgeleide klasse

De bovenliggende klasse is de klasse waarmee andere klassen kunnen worden geërfd van. Het wordt ook wel de basisklasse genoemd. De onderliggende klasse of afgeleide klasse is die klasse die alle eigenschappen en functies van een andere klasse erft. Overerving bevordert verschillende voordelen, i.e., het is de weergave van het echte werelderfenisverschijnsel. Het stimuleert de herbruikbaarheid van code. Als een functie in de ene klasse is gedefinieerd, kan de andere klasse deze klasse erven en alle bestaande functies gebruiken. Het is niet nodig om dezelfde code steeds opnieuw te schrijven voor het uitvoeren van vergelijkbare taken. Overerving wordt op meerdere niveaus toegepast. Als klasse B bijvoorbeeld wordt geërfd van A en klasse C wordt geërfd van klasse B, dan heeft klasse C alle eigenschappen van klasse B en evenals klasse A. De syntaxis van overerving is als volgt:

Klas Ouderklas:
Implementatiedetails van de bovenliggende klasse
klasse KindKlasse:
Implementatiedetails van de onderliggende klasse

Hoewel de onderliggende klasse toegang heeft tot alle kenmerken en functies van de bovenliggende klasse, kan deze ook zijn nieuwe kenmerken en functies toevoegen.

Dit artikel beschrijft en behandelt alle aspecten van Python-overerving.

Overerving implementatie in Python

Overerving kan in tal van situaties worden toegepast. Laten we aannemen dat je een softwaresysteem bouwt voor een universiteit. Het kan bestaan ​​uit meerdere belanghebbenden, zoals studenten, docenten, personeel, enz. Dus elke persoon heeft een naam, leeftijd, e-mail en andere gemeenschappelijke eigenschappen. Het is niet nodig om alle eigenschappen in elke klasse afzonderlijk aan te geven. We kunnen een persoonsklasse maken en alle klassen van belanghebbenden kunnen alle algemene eigenschappen en functies van de persoonsklasse erven. In dit geval is het niet nodig om de gemeenschappelijke eigenschappen in elke klasse steeds opnieuw te schrijven. Evenzo kunnen we een dierenklasse beschouwen consider. Er zijn honderden soorten dieren in deze wereld. Alle dieren eten, slapen en hebben ook een aantal soorten. Dit concept kan ook worden geïmplementeerd met behulp van overerving.

Laten we het dier als een superklasse beschouwen en de overerving implementeren. In het onderstaande voorbeeld hebben we één dierenklasse gemaakt. De dierenklasse is de bovenliggende klasse. Bovendien hebben we de honden- en kattenklassen gemaakt die de eigenschappen en functies van de dierenklasse erven. Het sleutelwoord pass wordt gebruikt in de onderliggende klasse, wanneer we geen uitgebreide functionaliteit in de onderliggende klasse hoeven te implementeren implement.

#ouderklas maken
klasse Dier:
#initialisatiefunctie
#initialisatie de naam van het dier en het soorttype
def __init__(zelf,naam,soort_type):
zelf.naam=naam
zelf.soort_type=soort_type
#een functie om de dierennaam af te drukken
def afdruknaam (zelf):
print("De naam van het dier is:",zelf.naam)
#een functie om het diersoorttype af te drukken
def afdruksoort (zelf):
print("Het soort soort is:",self.soort_type)
#de hondenklas maken als kinderklas of dierenklas
klasse Hond (Dier):
# geen uitbreiding of wijziging
voorbij lopen
#nu hebben hondenklassen toegang tot alle functies en eigenschappen van dierenklasse
#het hondenklasse-object maken
dogObj= Hond("Hond","carnivoor")
hondObj.print naam()
hondObj.afdruksoort()
#de kattenklas maken als kinderklas of dierenklas
klasse kat (dier):
#de initialisatiefunctie van kattenklasse
def __init__(zelf):
#aanroepen en gebruiken van de functie voor het initialiseren van dierenklassen
Dier.__init__(zelf,"kat","vleesetend zoogdier")
#nu hebben kattenklasse toegang tot alle functies en eigenschappen van dierenklasse
#het cat class-object maken
catObj= Kat()
katObj.print naam()
katObj.afdruksoort()

Uitgang:

De "Dier.__init__(zelf,”kat”,,”vleesetend zoogdier”)” roept de initialisatiefunctie van de klasse Animal aan.

De super() functie

De Python biedt een ingebouwde super() functie om alle eigenschappen en functies van de bovenliggende klasse te erven. Als we de functie super() gebruiken, is het niet nodig om de naam van de bovenliggende klasse te noemen, zoals we deden in "Dier.__init__(zelf,”kat”,,”vleesetend zoogdier”)” maar de functie super() wijst automatisch naar de bovenliggende klasse. Laten we de superfunctie gebruiken.

#ouderklas maken
klasse Dier:
#initialisatiefunctie
#initialisatie de naam van het dier en het soorttype
def __init__(zelf,naam,soort_type):
zelf.naam=naam
zelf.soort_type=soort_type
#een functie om de dierennaam af te drukken
def afdruknaam (zelf):
print("De naam van het dier is:",zelf.naam)
#een functie om het diersoorttype af te drukken
def afdruksoort (zelf):
print("Het soort soort is:",self.soort_type)
#de hondenklas maken als kinderklas of dierenklas
klasse Hond (Dier):
#met behulp van super() functie)
def __init__(zelf, naam, soort_type):
super().__init__(naam, soort_type)
#nu hebben hondenklassen toegang tot alle functies en eigenschappen van dierenklasse
#het hondenklasse-object maken
dogObj= Hond("Hond","carnivoor")
hondObj.print naam()
hondObj.afdruksoort()
#de kattenklas maken als kinderklas of dierenklas
klasse kat (dier):
#de initialisatiefunctie van kattenklasse
#met behulp van super() functie)
def __init__(zelf, naam, soort_type):
super().__init__(naam, soort_type)
#nu hebben kattenklasse toegang tot alle functies en eigenschappen van dierenklasse
#het cat class-object maken
catObj= Kat("kat","vleesetend zoogdier")
katObj.print naam()
katObj.afdruksoort()

Uitgang:

Laten we nu wat meer functionaliteiten toevoegen aan de onderliggende klassen. Elke klasse erft de gemeenschappelijke eigenschappen en functies van de bovenliggende klasse, maar de onderliggende klasse kan een extra klasse hebben die bedoeld is voor deze specifieke klasse. Laten we nu wat extra eigenschappen en functies maken in de honden- en kattenklasse.

#ouderklas maken
klasse Dier:
#initialisatiefunctie
#initialisatie de naam van het dier en het soorttype
def __init__(zelf,naam,soorttype):
zelf.naam=naam
zelf.soort_type=soort_type
#een functie om de dierennaam af te drukken
def afdruknaam (zelf):
print("De naam van het dier is:",zelf.naam)
#een functie om het diersoorttype af te drukken
def afdruksoort (zelf):
print("Het soort soort is:",self.soort_type)
#de hondenklas maken als kinderklas of dierenklas
klasse Hond (Dier):
#met behulp van super() functie)
#huisdiernaam is nieuw toegevoegde functionaliteit
def __init__(zelf, naam, soorttype, huisdiernaam):
super().__init__(naam, soort_type)
zelf.pet_name=pet_name
#een nieuwe functie maken
def printpetname (zelf):
print("De koosnaam is:",zelf.naam van huisdier)
#nu hebben hondenklassen toegang tot alle functies en eigenschappen van dierenklasse
#het hondenklasse-object maken
dogObj= Hond("Hond","carnivoor","Max")
hondObj.print naam()
hondObj.afdruksoort()
hondObj.printpetname()
#de kattenklas maken als kinderklas of dierenklas
klasse kat (dier):
#de initialisatiefunctie van kattenklasse
#met behulp van super() functie)
#voedsel en huisdiernaam eigenschappen toevoegen
def __init__(self, name, specie_type,food, pet_name):
super().__init__(naam, soort_type)
zelf.eten = eten
zelf.pet_name=pet_name
#nieuwe functie om toegang te krijgen tot voedselinfo
def printfood(zelf):
print("De kat houdt van:", zelf.voedsel)
#nieuwe functie voor koosnaampje
def printpetname(zelf):
print("De koosnaam is:",zelf.naam van huisdier)
#nu hebben kattenklasse toegang tot alle functies en eigenschappen van dierenklasse
#het cat class-object maken
catObj= Kat ("kat", "vleesetend zoogdier", "Koek", "Daisy")
katObj.print naam()
katObj.afdruksoort()

Uitgang:

De functies overschrijven:

De functie-overheersing is het belangrijke concept bij overerving. Een functie wordt een overschreven functie genoemd als de naam van de functie hetzelfde is in bovenliggende en onderliggende klassen, maar de implementatie of functionaliteit van de functie in elke klasse anders is. Laten we eens kijken naar het voorbeeld van een overschreven functie in de klasse Animal. In het onderstaande voorbeeld hebben we een eetfunctie in de dierklassen en ook in de kinderklassen (hond en kat). De naam van de functie is hetzelfde in de klassen, maar de implementatie is anders.

#ouderklas maken
klasse Dier:
zeker eten (mijzelf):
print("Alle dieren eten voedsel")
#object maken
animalObj = Dier()
#aanroepfunctie
dierObj.eten()
#hondenklas maken
klasse Hond (Dier):
zeker eten (mijzelf):
print("De hond eet vlees")
#object maken
dogObj=Hond()
#aanroepfunctie
hondObj.eten()
klasse kat (dier):
zeker eten (mijzelf):
print("De kat eet koekjes en wat speciaal voer")
#object maken
catObj = Kat()
#aanroepfunctie
katObj.eten()

Uitgang:

Conclusie

Overerving is een van de fundamentele concepten van objectgeoriënteerde programmeertalen. Door overerving te gebruiken, creëren we de onderliggende klassen die alle functies en eigenschappen van de bovenliggende klasse erven. Overerving bevordert de herbruikbaarheid van de code. Dit artikel legt de overerving in Python uit met voorbeelden.

Beste Linux-distributies voor gaming in 2021
Het Linux-besturingssysteem heeft een lange weg afgelegd van zijn oorspronkelijke, eenvoudige, servergebaseerde uiterlijk. Dit besturingssysteem is de...
Hoe u uw gamesessie op Linux kunt vastleggen en streamen
In het verleden werd het spelen van games alleen als een hobby beschouwd, maar met de tijd zag de game-industrie een enorme groei in termen van techno...
Beste spellen om te spelen met handtracking
Oculus Quest introduceerde onlangs het geweldige idee van handtracking zonder controllers. Met een steeds toenemend aantal games en activiteiten die f...