Úvod do Overriding v Pythonu
V Overriding in Python je objektově orientované programování třída, která je původně deklarována, nazývána rodičovská třída. ten deklarovaný po tomto se nazývá podtřída nebo podřízená třída. V technice Overriding in Python je podtřída poskytována konkrétní typ implementace, ve kterém je prvek nadřazené třídy přepsán prvkem v podtřídě. Podle této techniky musí být entita deklarovaná v podtřídě podobná v názvu, parametru, argumentech s nadřazenou třídou. V takovém případě se podtřída přepíše nadřazenou třídu.
Funkce Overriding v Pythonu
Hlavním typem přepisování v pythonu je přepisování metod. zde bude v podtřídě přepsána metoda deklarovaná v nadřazené třídě. Syntaktické znázornění potlačení metody je uvedeno níže,
Syntax:
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()
Příklad č. 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()
Výstup:
Vysvětlení:
- Výše uvedený program používá tři seznamy, dva z nich drží malá a velká písmena, třetí drží hodnoty prvočísel od 0 do 100.
- funkčnost programu je navržena tak, že se očekává, že budou vytištěny atributy a obsah těchto seznamů. V takovém případě se pro tento účel používají dvě různé třídy. Nadřazená třída zpracovává všechny abecedy kolekce, zatímco podřízená třída zpracovává kolekce prvočísel.
- Můžeme si všimnout, že funkce 'attribute_finder_method ()' je deklarována jako součást obou tříd. V nadřazené třídě tato metoda drží zpracování atributů pro abecedy a v podřízené třídě drží zpracování atributů pro prvočísla. významnou specifikací je název funkce, který je v obou deklarovaných třídách stejný.
- Když je tedy objekt vytvořen pro nadřazenou třídu, bude tento objekt schopen iniciovat volání funkce pro metodu v nadřazené třídě a na druhé straně bude objekt vytvořený pro podřízenou třídu schopen iniciovat volání funkce pro podřízenou třídu. . To znamená, když 'object2. attribute_finder_method () 'se nazývá toto volá metodu pro podřízenou třídu i v přítomnosti stejné metody v nadřazené třídě. To tedy jasně odůvodňuje přepisování metody podřízené třídy nad nadřazenou třídou deklarovanou asimilací skutečnosti, že podtřída je poskytována konkrétní typ implementace, v níž je prvek nadřazené třídy přepsán prvkem v podtřídě.
Příklad č. 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 " )
Výstup:
Vysvětlení:
Zde je metoda display () zděděna a přepsána, čímž se opět dosáhne koncepce potlačení metody.
Pravidla převažující v Pythonu
- Metoda přepsaná musí být stejná jako metoda zadaná v nadřazené třídě
- statické metody nelze přepsat
- Konečné metody nelze přepsat
- Synchronizovaný modifikátor nemá žádný vliv na regulaci regulace.
Závěr
Koncept převahy odráží více implementací téže třídy. zde synchronizovaný modifikátor nemá žádný vliv na regulaci nadřazení. Ještě dříve definuje chování dané třídy velmi hluboce. tyto případy dělají koncept převládajícího ve světě pythonu velmi významný.
Doporučené články
Toto je průvodce k Overriding v Pythonu. Zde diskutujeme úvod, funkci potlačení a pravidla přemostění v Pythonu. Další informace naleznete také v dalších navrhovaných článcích -
- Funkce Pythonu
- Přepisování v JavaScriptu
- Kompilátor PHP
- Relace v PHP
- Průvodce statickou metodou v PHP
- Příklady statické metody JavaScriptu