Introducción a la anulación en Python

En Overriding in Python, la programación orientada a objetos, la clase que se declara inicialmente se llama clase padre. la declarada después de esto se llama subclase o clase secundaria. En la técnica Overriding in Python, a la subclase se le proporciona un tipo particular de implementación en la cual el elemento de la clase padre es anulado por el elemento en la subclase. De acuerdo con esta técnica, la entidad declarada en la subclase debe ser similar en nombre, parámetro, argumentos con la clase principal. Por lo tanto, en tal caso, se dice que la subclase anula la clase principal.

La función de anular en Python

El principal tipo de anulación en python es la anulación de métodos. aquí, un método declarado en la clase padre se anulará en la subclase. La representación sintáctica de la anulación de métodos se representa a continuación,

Sintaxis:

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

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

Salida:

Explicación:

  • El programa anterior utiliza tres listas, dos de ellas con letras minúsculas y mayúsculas, la tercera contiene los valores de números primos de 0 a 100.
  • La funcionalidad del programa está diseñada de tal manera que se espera que se impriman los atributos y el contenido de estas listas. En tal caso, se utilizan dos clases diferentes para este propósito. La clase primaria maneja todos los alfabetos de la colección, mientras que la clase secundaria maneja la colección de números primos.
  • Podemos notar que la función 'attribute_finder_method ()' se declara como parte de ambas clases. En la clase primaria, este método contiene el procesamiento de atributos para alfabetos y en la clase secundaria, contiene el procesamiento de atributos para números primos. La especificación significativa es que el nombre de la función es el mismo en ambas clases declaradas.
  • Por lo tanto, cuando se crea una instancia de un objeto para la clase principal, este objeto será capaz de iniciar la llamada a la función para el método en la clase principal y, por otro lado, el objeto instanciado para la clase secundaria será capaz de iniciar la llamada a la función para el método en la clase secundaria . Esto significa cuando 'object2. attribute_finder_method () 'se llama esto llama al método para la clase secundaria, incluso en presencia del mismo método en la clase primaria. Por lo tanto, esto justifica claramente la anulación del método de la clase secundaria sobre la clase primaria declarada al asimilar el hecho de que la subclase proporciona un tipo particular de implementación en la que el elemento de la clase primaria anula el elemento de la clase primaria.

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

Salida:

Explicación:

Aquí el método display () se hereda y se anula, lo que logra nuevamente el concepto de anulación de métodos.

Reglas de anulación en Python

  • El método reemplazado debe ser el mismo nombre que el método especificado en la clase padre
  • los métodos estáticos no se pueden anular
  • Los métodos finales no pueden ser anulados
  • El modificador sincronizado no tiene consecuencias en las regulaciones de anulación.

Conclusión

El concepto de anulación refleja múltiples implementaciones de la misma clase. aquí el modificador sincronizado no tiene consecuencias en las regulaciones de anulación. Más previamente, define el comportamiento de la clase involucrada muy profundamente. Estos casos hacen que el concepto de anulación sea muy significativo en el mundo de Python.

Artículos recomendados

Esta es una guía para sobrescribir en Python. Aquí discutimos la introducción, la función de anulación y las reglas de anulación en Python. También puede consultar nuestros otros artículos sugeridos para obtener más información:

  1. Características de Python
  2. Anulación en JavaScript
  3. Compilador PHP
  4. Sesiones en PHP
  5. Guía de método estático en PHP
  6. Ejemplos de método estático de JavaScript