Prevlada v Pythonu - Funkcija in pravila preglasitve

Kazalo:

Anonim

Uvod v preglasitev v Pythonu

V Overriding v Pythonu objektno usmerjeno programiranje, razred, ki je prvotno prijavljen, se imenuje nadrejeni razred. tisti, ki je deklariran po tem, se imenuje podrazred ali otroški razred. V tehniki Overriding in Python je podrazredu določena vrsta izvedbe, v kateri element nadrejenega razreda nadomešča element v podrazredu. V skladu s to tehniko mora biti subjekt, ki je deklariran v podrazredu, po imenu, parametru in argumentih podoben argumentom nadrejenega razreda.so v takšnem primeru velja, da podvrsto nadvlada nadrejeni razred.

Funkcija preglasitve v Pythonu

Najpomembnejša vrsta preglasitve v pythonu je metoda overriding. tukaj bo metoda, navedena v nadrejenem razredu, prepisana v podrazredu. Sintaksualni prikaz preglasitve metode je predstavljen spodaj,

Sintaksa:

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()

Primer # 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()

Izhod:

Pojasnilo:

  • Zgornji program uporablja tri sezname, od katerih dva vsebujeta male in velike črke, tretji ima vrednosti največjih številk od 0 do 100.
  • funkcionalnost programa je zasnovana tako, da se pričakuje, da bodo atributi in vsebina teh seznamov natisnjeni. V tem primeru se v ta namen uporabljajo dva različna razreda. Nadrejeni razred obravnava vse abecede zbirke, medtem ko otroški razred obravnava zbirko pravih številk.
  • Opazimo lahko, da je funkcija 'attribute_finder_method ()' deklarirana kot del obeh razredov. V nadrejenem razredu ta metoda vsebuje obdelavo atributov za abecede, v nadrejenem razredu pa ima obdelavo atributov za prime številke. pomembna specifikacija je, da je ime funkcije enako v obeh deklariranih razredih.
  • Torej, ko je predmet instanciran za nadrejeni razred, potem bo ta objekt sposoben sprožiti klic funkcije za metodo v nadrejenem razredu, na drugi strani pa bo predmet, instanciran za nadrejeni razred, lahko sprožil klic funkcije za metodo v otroškem razredu . To pomeni, ko 'objekt2. attribute_finder_method () 'se imenuje, to kliče metodo za otroški razred, tudi če je enaka metoda v nadrejenem razredu. Torej to jasno upravičuje preglasitev metode nadrejenega razreda nad nadrejenim razredom, deklarirano z asimilacijo dejstva, da je pod podrazredu določena vrsta izvedbe, v kateri element nadrejenega razreda nadomešča element v podrazredu.

Primer # 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 " )

Izhod:

Pojasnilo:

Tu je metoda display () podedovana in razveljavljena, kar ponovno doseže koncept preglasitve metode.

Pravila preglasitve v Pythonu

  • Prepisana metoda mora biti isto ime kot metoda, določena v nadrejenem razredu
  • statičnih metod ni mogoče preglasiti
  • Končnih metod ni mogoče razveljaviti
  • Sinhronizirani modifikator ne vpliva na predpise o preglasitvi.

Zaključek

Koncept preglasitve odraža več izvedb istega razreda. tu sinhronizirani modifikator ne vpliva na predpise o preglasitvi. Predhodno zelo natančno opredeli vedenje vpletenega razreda. zaradi teh primerov je koncept preglasitve zelo pomemben v svetu pytonov.

Priporočeni članki

To je vodnik za Prevladovanje v Pythonu. Tukaj razpravljamo o uvodu, delovanju preglasitve in pravilih preglasitve v Pythonu. Obiščite lahko tudi druge naše predlagane članke, če želite izvedeti več -

  1. Značilnosti Pythona
  2. Prevlado v JavaScript
  3. PHP prevajalnik
  4. Seje v PHP
  5. Vodnik po statični metodi v PHP
  6. Primeri statične metode JavaScript