Sostituzione in Python - Funzione e regole di sostituzione

Sommario:

Anonim

Introduzione a Override in Python

In Override in Python, la programmazione orientata agli oggetti, la classe dichiarata inizialmente viene chiamata classe genitore. quello dichiarato dopo questo si chiama sottoclasse o classe figlio. Nella tecnica Override in Python, alla sottoclasse viene fornito un particolare tipo di implementazione in cui l'elemento della classe genitore viene sovrascritto dall'elemento nella sottoclasse. Secondo questa tecnica, l'entità dichiarata nella sottoclasse deve essere simile per nome, parametro, argomenti con la classe genitore. In tal caso si dice che la sottoclasse abbia la precedenza sulla classe genitore.

La funzione di Override in Python

Il principale tipo di override in Python è l'override del metodo. qui un metodo dichiarato nella classe genitore verrà sovrascritto nella sottoclasse. La rappresentazione sintassica della sostituzione del metodo è rappresentata di seguito,

Sintassi:

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

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

Produzione:

Spiegazione:

  • Il programma di cui sopra utilizza tre elenchi, due dei quali contengono le lettere minuscole e le lettere maiuscole, il terzo contiene i valori dei numeri primi da 0 a 100.
  • la funzionalità del programma è progettata in modo tale che gli attributi e il contenuto di questi elenchi dovrebbero essere stampati. In tal caso, vengono utilizzate due classi diverse per questo scopo. La classe padre gestisce tutti gli alfabeti di raccolta mentre la classe figlio gestisce la raccolta di numeri primi.
  • Possiamo notare che la funzione 'attributi_finder_method ()' è dichiarata come parte di entrambe le classi. Nella classe genitore, questo metodo contiene l'elaborazione degli attributi per alfabeti e nella classe figlio, contiene l'elaborazione degli attributi per i numeri primi. la specifica significativa è che il nome della funzione è lo stesso in entrambe le classi dichiarate.
  • Pertanto, quando un oggetto viene istanziato per la classe genitore, questo oggetto sarà in grado di avviare la chiamata di funzione per il metodo nella classe genitore e, d'altra parte, l'oggetto istanziato per la classe figlio sarà in grado di avviare la chiamata di funzione per il metodo nella classe figlio . Ciò significa che quando 'oggetto2. attrib_finder_method () 'si chiama questo chiama il metodo per la classe figlio anche in presenza dello stesso metodo nella classe genitore. Quindi questo giustifica chiaramente la sostituzione del metodo della classe figlio rispetto alla classe genitore dichiarata assimilando il fatto che alla sottoclasse viene fornito un particolare tipo di implementazione in cui l'elemento della classe genitore viene sovrascritto dall'elemento nella sottoclasse.

Esempio n. 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 " )

Produzione:

Spiegazione:

Qui il metodo display () viene ereditato e sovrascritto, ottenendo nuovamente il concetto di override del metodo.

Regole di sostituzione in Python

  • Il metodo sovrascritto deve avere lo stesso nome del metodo specificato nella classe genitore
  • i metodi statici non possono essere sovrascritti
  • I metodi finali non possono essere ignorati
  • Il modificatore sincronizzato non ha conseguenze sulle regole di override.

Conclusione

Il concetto di override riflette molteplici implementazioni della stessa classe. qui il modificatore sincronizzato non ha conseguenze sulle regole di override. Più in precedenza definisce molto profondamente il comportamento della classe coinvolta. questi casi rendono il concetto di scavalcamento molto significativo nel mondo dei pitoni.

Articoli consigliati

Questa è una guida per Override in Python. Qui discutiamo l'introduzione, la funzione di sostituzione e le regole di sostituzione in Python. Puoi anche consultare i nostri altri articoli suggeriti per saperne di più–

  1. Funzionalità di Python
  2. Sostituzione in JavaScript
  3. Compilatore PHP
  4. Sessioni in PHP
  5. Guida al metodo statico in PHP
  6. Esempi di metodo statico JavaScript