Surcharger en Python - Fonction et règles de priorité

Table des matières:

Anonim

Introduction à la substitution en Python

Dans Overriding in Python, la programmation orientée objet, la classe qui est déclarée initialement est appelée la classe parente. celle déclarée après cela s'appelle la sous-classe ou la classe enfant. Dans la technique Overriding in Python, la sous-classe reçoit un type particulier d'implémentation dans lequel l'élément de classe parent est remplacé par l'élément de la sous-classe. Selon cette technique, l'entité déclarée dans la sous-classe doit avoir un nom, un paramètre et des arguments similaires à ceux de la classe parente. Dans ce cas, la sous-classe est censée remplacer la classe parente.

La fonction de remplacement en Python

Le principal type de substitution en python est la substitution de méthode. ici, une méthode déclarée dans la classe parente sera remplacée dans la sous-classe. La représentation syntaxique du remplacement de méthode est représentée ci-dessous,

Syntaxe:

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

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

Production:

Explication:

  • Le programme ci-dessus utilise trois listes, deux d'entre elles contenant les lettres minuscules et majuscules, la troisième contient les valeurs des nombres premiers de 0 à 100.
  • la fonctionnalité du programme est conçue de telle manière que les attributs et le contenu de ces listes devraient être imprimés. Dans ce cas, deux classes différentes sont utilisées à cet effet. La classe parent gère tous les alphabets de collection tandis que la classe enfant gère la collection de nombres premiers.
  • Nous pouvons remarquer que la fonction 'attribute_finder_method ()' est déclarée comme faisant partie des deux classes. Dans la classe parent, cette méthode détient le traitement d'attribut pour les alphabets et dans la classe enfant, elle détient le traitement d'attribut pour les nombres premiers. la spécification significative est que le nom de la fonction est le même dans les deux classes déclarées.
  • Ainsi, lorsqu'un objet est instancié pour la classe parent, cet objet sera capable d'initier l'appel de fonction pour la méthode dans la classe parent et d'autre part, l'objet instancié pour la classe enfant sera capable d'initier l'appel de fonction pour la méthode dans la classe enfant . Cela signifie que «objet2. attribute_finder_method () 'est appelé ceci appelle la méthode de la classe enfant même en présence de la même méthode dans la classe parent. Ainsi, cela justifie clairement le remplacement de la méthode de classe enfant par rapport à la classe parent déclarée en assimilant le fait que la sous-classe est fournie un type particulier d'implémentation dans lequel l'élément de classe parent est remplacé par l'élément de la sous-classe.

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

Production:

Explication:

Ici, la méthode display () est héritée et redéfinie, ce qui permet de retrouver le concept de redéfinition de méthode.

Règles de remplacement en Python

  • La méthode substituée doit être du même nom que la méthode spécifiée dans la classe parente
  • les méthodes statiques ne peuvent pas être remplacées
  • Les méthodes finales ne peuvent pas être remplacées
  • Le modificateur synchronisé n'a aucune conséquence sur les règles de dérogation.

Conclusion

Le concept de substitution reflète plusieurs implémentations de la même classe. ici le modificateur synchronisé n'a aucune conséquence sur les règles de dérogation. Plus avant, il définit très profondément le comportement de la classe impliquée. ces cas rendent le concept de surcharge très important dans le monde python.

Articles recommandés

Ceci est un guide de remplacement en Python. Nous discutons ici de l'introduction, de la fonction de remplacement et des règles de remplacement en Python. Vous pouvez également consulter nos autres articles suggérés pour en savoir plus–

  1. Fonctionnalités de Python
  2. Remplacement en JavaScript
  3. Compilateur PHP
  4. Sessions en PHP
  5. Guide de la méthode statique en PHP
  6. Exemples de méthode statique JavaScript