Wprowadzenie do przesłonięcia w Pythonie
W Overriding in Python, programowaniu obiektowym, klasa zadeklarowana początkowo nazywana jest klasą nadrzędną. ten zadeklarowany później nazywa się podklasą lub klasą potomną. W technice Overriding in Python podklasa zapewnia określony typ implementacji, w której element klasy nadrzędnej jest zastępowany przez element w podklasie. Zgodnie z tą techniką jednostka zadeklarowana w podklasie musi mieć podobną nazwę, parametr, argumenty z klasą nadrzędną. W takim przypadku mówi się, że podklasa zastępuje klasę nadrzędną.
Funkcja przesłonięcia w Pythonie
Głównym rodzajem przesłonięcia w pythonie jest przesłonięcie metody. tutaj metoda zadeklarowana w klasie nadrzędnej zostanie zastąpiona w podklasie. Składnia reprezentacji zastąpienia metody jest przedstawiona poniżej,
Składnia:
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()
Przykład 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()
Wynik:
Wyjaśnienie:
- Powyższy program wykorzystuje trzy listy, dwie z nich zawierają małe i wielkie litery, trzecia zawiera wartości liczb pierwszych od 0 do 100.
- funkcjonalność programu jest zaprojektowana w taki sposób, że atrybuty i zawartość tych list powinny zostać wydrukowane. W takim przypadku wykorzystywane są dwie różne klasy. Klasa nadrzędna obsługuje wszystkie alfabety kolekcji, podczas gdy klasa podrzędna obsługuje kolekcję liczb pierwszych.
- Możemy zauważyć, że funkcja „attribute_finder_method ()” jest zadeklarowana jako część obu klas. W klasie nadrzędnej ta metoda przetwarza przetwarzanie atrybutów alfabetów, aw klasie podrzędnej przetwarza przetwarzanie atrybutów liczb pierwszych. istotną specyfikacją jest nazwa funkcji, która jest taka sama w obu zadeklarowanych klasach.
- Tak więc, gdy instancja obiektu zostanie utworzona dla klasy nadrzędnej, wówczas obiekt ten będzie w stanie zainicjować wywołanie funkcji dla metody w klasie nadrzędnej, a z drugiej strony obiekt utworzony dla klasy potomnej będzie mógł zainicjować wywołanie funkcji dla metody w klasie potomnej . Oznacza to, że „object2. atrybut_finder_method () 'nazywa się to wywołuje metodę dla klasy podrzędnej nawet w obecności tej samej metody w klasie nadrzędnej. Tak więc wyraźnie uzasadnia to zastąpienie metody klasy potomnej nad zadeklarowaną klasą nadrzędną przez przyswojenie faktu, że podklasa zapewnia określony typ implementacji, w której element klasy nadrzędnej jest zastępowany przez element w podklasie.
Przykład nr 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 " )
Wynik:
Wyjaśnienie:
Tutaj metoda display () jest dziedziczona i nadpisywana, co ponownie powoduje zastąpienie metody.
Zasady zastępowania w Pythonie
- Zastąpiona metoda musi mieć taką samą nazwę jak metoda określona w klasie nadrzędnej
- metod statycznych nie można zastąpić
- Ostatecznych metod nie można zastąpić
- Zsynchronizowany modyfikator nie ma wpływu na zasady nadpisywania.
Wniosek
Koncepcja zastąpienia odzwierciedla wiele implementacji tej samej klasy. tutaj zsynchronizowany modyfikator nie ma wpływu na zasady nadpisywania. Wcześniej określa bardzo głęboko zachowanie zaangażowanej klasy. przypadki te sprawiają, że koncepcja zastąpienia jest bardzo znacząca w świecie python.
Polecane artykuły
Jest to przewodnik po zastępowaniu w Pythonie. Tutaj omawiamy wprowadzenie, funkcję przesłonięcia i zasady przesłonięcia w języku Python. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -
- Funkcje Pythona
- Przesłanianie w JavaScript
- Kompilator PHP
- Sesje w PHP
- Przewodnik po metodzie statycznej w PHP
- Przykłady metody statycznej JavaScript