Inleiding tot opheffen in Python
In Overriding in Python, de objectgeoriënteerde programmering, wordt de klasse die aanvankelijk wordt gedeclareerd de bovenliggende klasse genoemd. degene die hierna wordt verklaard, wordt de subklasse of de kindklasse genoemd. In de techniek Overriding in Python krijgt de subklasse een bepaald type implementatie waarin het bovenliggende klasse-element wordt vervangen door het element in de subklasse. Volgens deze techniek moet de in de subklasse gedeclareerde entiteit vergelijkbaar zijn in naam, parameter, argumenten met de bovenliggende klasse. Dus in een dergelijk geval wordt gezegd dat de subklasse de bovenliggende klasse overschrijft.
De functie van opheffen in Python
Het belangrijkste type van opheffing in python is methode opheffing. hier wordt een in de bovenliggende klasse gedeclareerde methode overschreven in de subklasse. Syntaxuele weergave van methode-overriding wordt hieronder weergegeven,
Syntaxis:
class parent_class:
def overriding_method(self):
class Child_class:
def overriden_method(self):
obj1 = parent_class()
obj2 = Child_class()
obj1.overriding_method()
obj2.overriden_method()
Voorbeeld 1
class parent_class
def __init__(self, Lower_Case, Upper_Case):
self.Lower_Case = Lower_Case
self.Upper_Case = Upper_Case
def attribute_finder_method(self):
print('- - - - - - Overriding method output - - - - -')
print(' - - - - PRINT ON ALPHABETS - - - - - ')
print(' Collection used for variable1 : ', type(Lower_Case))
print(' Collection used for variable2 : ', type(Upper_Case))
print(' Lower case alphabets : ', len(Lower_Case), '--- Values -->', Lower_Case)
print(' Upper case alphabets : ', len(Upper_Case), '--- Values -->', Upper_Case)
print(' ')
print(' ')
print(' ')
class child_class:
def __init__(self, Prime_Numbers):
self.Prime_Numbers = Prime_Numbers
def attribute_finder_method(self):
print('- - - - - - Overriden method output - - - - -')
print(' - - - - PRINT ON PRIME NUMBERS - - - - - ')
print(' Collection used for variable3 : ', type(Prime_Numbers))
print(' Lower case alphabets : ', len(Prime_Numbers), '--- Values -->', Prime_Numbers)
Lower_Case = ( ' a ', ' b ', ' c ', ' d ', ' e ', ' f ', ' g ', ' h ', ' i ', ' j ', ' k ', ' l ', ' m ', ' n ', ' o ', ' p ', ' q ', ' r ', ' s ', ' t ', ' u ', ' v ', ' w ', ' x ', ' y ', ' z ' ) Upper_Case = ( ' A ', ' B ', ' C ', ' D ', ' E ', ' F ', ' G ', ' H ', ' I ', ' J ', ' K ', ' L ', ' M ', ' N ', ' O ', ' P ', ' Q ', ' R ', ' S ', ' T ', ' U ', ' V ', ' W ', ' X ', ' Y ', ' Z ' ) Prime_Numbers = ( ' 1 ', ' 3 ', ' 5 ', ' 7 ', ' 11 ', ' 13 ', ' 17 ', ' 19 ', ' 29 ', ' 31 ', ' 37 ', ' 41 ', ' 43 ', ' 47 ', ' 53 ', ' 59 ', ' 61 ', ' 67 ', ' 71 ', ' 73 ', ' 79 ', ' 83 ', ' 89 ', ' 97 ') object1 = parent_class(Lower_Case, Upper_Case)
object1.attribute_finder_method()
object2 = child_class(Prime_Numbers)
object2.attribute_finder_method()
Output:
Uitleg:
- Het bovenstaande programma gebruikt drie lijsten, waarvan er twee kleine letters en hoofdletters bevatten, de derde bevat de priemgetallen van 0 tot 100.
- de functionaliteit van het programma is zo ontworpen dat de attributen en inhoud van deze lijsten naar verwachting worden afgedrukt. In een dergelijk geval worden hiervoor twee verschillende klassen gebruikt. De bovenliggende klasse verwerkt alle alfabetten van de verzameling, terwijl de onderliggende klasse de priemgetallenverzameling afhandelt.
- We kunnen opmerken dat de functie 'attribute_finder_method ()' wordt gedeclareerd als onderdeel van beide klassen. In de bovenliggende klasse bevat deze methode de attribuutverwerking voor alfabetten en in de onderliggende klasse bevat deze de attribuutverwerking voor priemgetallen. de belangrijke specificatie is dat de functienaam dezelfde is in beide gedeclareerde klassen.
- Dus wanneer een object wordt geïnstantieerd voor de bovenliggende klasse, kan dit object functieaanroep initiëren voor de methode in de bovenliggende klasse en aan de andere kant kan het object dat wordt geïnstantieerd voor de child class de functieaanroep initiëren voor de methode in de child class . Dit betekent wanneer 'object2. attribute_finder_method () 'wordt genoemd, dit roept de methode voor de child class aan, zelfs in de aanwezigheid van dezelfde methode in de parent class. Dit rechtvaardigt dus duidelijk de opheffing van de methode van de kindklasse boven de bovenliggende klasse die wordt verklaard door het feit te assimileren dat aan subklasse een bepaald type implementatie wordt geboden waarin het element van de bovenliggende klasse wordt vervangen door het element in de subklasse.
Voorbeeld 2
#!/usr/bin/evn python
# Define a class as 'Individual' #
class Individual:
# Constructor#1 #
def __init__(self):
self.Student_Name = input( " Enter Name of the student : " )
self.Student_age = input( " Enter age of the student : " )
self.Student_gender = input( " Enter gender of the student : " )
# Method
def display(self):
print( " \n \n Enter Name of the student : ", self.Student_Name )
print( " Enter age of the student : ", self.Student_age )
print( " Enter gender of the student : ", self.Student_gender )
# Define a class as 'Evaluated_Marks' #
class Evaluated_Marks:
# Constructor#2 #
def __init__(self):
self.stuClass = input( " Class of the student : " )
print( " Evaluated Marks per subject : " )
self.literature = int(input( " Mark in Literature subject : " ))
self.math = int(input( " Mark in Math subject : " ))
self.biology = int(input( " Mark in Biology subject : " ))
self.physics = int(input( " Mark in Physics subject : " ))
# Method
def display(self):
print( " Study in : ", self.stuClass)
print( " Total Evaluated_Marks : ", self.literature + self.math + self.biology + self.physics)
class student(Individual, Evaluated_Marks):
def __init__(self):
# Call ' Individual ' super class constructor
Individual.__init__(self)
# Call ' Evaluated_Marks ' superclass constructor
Evaluated_Marks.__init__(self)
def result(self):
# Call method of class 'Individual'
Individual.display(self)
# Call method of class 'Evaluated_Marks'
Evaluated_Marks.display(self)
# Objects of class 'student' #
Student1 = student()
Student2 = student()
print(" ")
print( "Note: The instances get initialized with the given values Successfully " )
Output:
Uitleg:
Hier wordt de methode display () overgeërfd en overschreven, waardoor opnieuw het concept van de methode van override wordt bereikt.
Regels voorrang in Python
- De overschreven methode moet dezelfde naam hebben als de methode die is opgegeven in de bovenliggende klasse
- statische methoden kunnen niet worden opgeheven
- Definitieve methoden kunnen niet worden opgeheven
- De gesynchroniseerde modificator heeft geen gevolgen voor de voorschriften voor het negeren.
Conclusie
Het concept van negeren weerspiegelt meerdere implementaties van dezelfde klasse. hier heeft de gesynchroniseerde modificator geen gevolgen voor de voorschriften voor het negeren. Meer eerder definieert het het gedrag van de betrokken klasse zeer diep. deze gevallen maken het concept van het opheffen van een zeer belangrijke in de python-wereld.
Aanbevolen artikelen
Dit is een gids voor Overriding in Python. Hier bespreken we de inleiding, functie van opheffen en de regels van opheffen in Python. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie–
- Python-functies
- Overschrijven in JavaScript
- PHP-compiler
- Sessies in PHP
- Gids voor statische methode in PHP
- Voorbeelden van statische JavaScript-methode