Introducere în Overriding in Python
În Overriding in Python, programarea orientată pe obiect, clasa declarată inițial se numește clasa părinte. cel declarat după aceasta se numește subclasa sau clasa pentru copii. În tehnica Overriding in Python, subclasei este oferită un anumit tip de implementare în care elementul clasei părinte este suprasolicitat de elementul din subclasă. Conform acestei tehnici, entitatea declarată în subclasă trebuie să fie similară cu numele, parametrul, argumentele cu clasa părinte.so, în acest caz, se spune că subclasa trece peste clasa părinte.
Funcția Overriding în Python
Principalul tip de suprasolicitare în python este suprasolicitarea metodei. aici o metodă declarată în clasa părinte va fi anulată în subclasă. Reprezentarea sintaxuală a suprascrierii metodei este prezentată mai jos,
Sintaxă:
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()
Exemplul # 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()
ieşire:
Explicaţie:
- Programul de mai sus folosește trei liste două dintre ele care conțin litere mici și minuscule, a treia deține valorile numărului prim de la 0 la 100.
- funcționalitatea programului este proiectată astfel încât atributele și conținutul acestor liste să fie tipărite. În acest caz, două clase diferite sunt utilizate în acest scop. Clasa părinte gestionează toate alfabetele colecției, în timp ce clasa copil se ocupă de colecția numerelor prime.
- Putem observa că funcția 'attribute_finder_method ()' este declarată ca parte a ambelor clase.În clasa părinte, această metodă deține procesarea atributelor pentru alfabetele și în clasa copil, deține procesarea atributelor pentru numere prime. specificația semnificativă este denumirea funcției fiind aceeași în ambele clase declarate.
- Deci, atunci când un obiect este inițiat pentru clasa părinte, atunci acest obiect va fi capabil să inițieze apelul funcțional pentru metoda din clasa părinte, iar pe de altă parte, obiectul inițiat pentru clasa copil va fi capabil să inițieze apelul funcțional pentru metoda din clasa copil. . Aceasta înseamnă când „obiect2. attribute_finder_method () 'se numește aceasta apelează la metoda pentru clasa copil chiar și în prezența aceleiași metode în clasa părinte. Așadar, acest lucru justifică în mod clar înlocuirea metodei clasei copil peste clasa părinte declarată prin asimilarea faptului că subclasei este oferită un anumit tip de implementare în care elementul clasei părinte este suprasolicitat de elementul din subclasă.
Exemplul # 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 " )
ieşire:
Explicaţie:
Aici metoda afișajului () este moștenită și anulată, ceea ce atinge din nou conceptul de suprasolicitare a metodei.
Reguli de suprasolicitare în Python
- Metoda suprasolicitată trebuie să aibă același nume ca metoda specificată în clasa părinte
- metodele statice nu pot fi ignorate
- Metodele finale nu pot fi anulate
- Modificatorul sincronizat nu are nicio consecință asupra reglementărilor de supraveghere.
Concluzie
Conceptul de suprapunere reflectă implementări multiple ale aceleiași clase. aici modificatorul sincronizat nu are nicio consecință asupra reglementărilor de supraveghere. Mai mult înainte definește foarte profund comportamentul clasei implicate. aceste cazuri fac ca conceptul de suprasolicitare să fie unul foarte semnificativ în lumea pitonilor.
Articole recomandate
Acesta este un ghid pentru Overriding in Python. Aici vom discuta despre introducerea, Funcția de suprasolicitare și Regulile de suprasolicitare în Python. Puteți parcurge și alte articole sugerate pentru a afla mai multe -
- Caracteristici Python
- Suprasolicitare în JavaScript
- Compilator PHP
- Ședințe în PHP
- Ghid pentru metoda statică în PHP
- Exemple de metoda statică JavaScript