Python | función super() con herencia multinivel

función super() en Python: la función super
de Python nos proporciona la posibilidad de referirnos a la clase principal explícitamente. Es básicamente útil cuando tenemos que llamar funciones de superclase. Devuelve el objeto proxy que nos permite referirnos a la clase principal por ‘super’ .

Para entender la superfunción de Python, debemos conocer la herencia . En la herencia de Python, las subclases se heredan de la superclase.

La función Python Super nos brinda la flexibilidad de hacer herencias de un solo nivel o de varios niveles y hace que nuestro trabajo sea más fácil y cómodo. Tenga en cuenta que al referirse a la superclase desde la subclase, no es necesario escribir el nombre de la superclase explícitamente.

Aquí hay un ejemplo de cómo llamar a la super función en Python3:

# parent class also sometime called the super class
class Parentclass():
    def __init__(self):
        pass
  
# derived or subclass
# initialize the parent or base class within the subclass
class subclass(Parentclass):
    def __init__(self):
        # calling super() function to make process easier
        super()

 
Función Python super() con herencia multinivel.

Como hemos estudiado, la super()función de Python nos permite referirnos a la superclase implícitamente. Pero en las herencias de varios niveles, surge la pregunta de que hay tantas clases, ¿a qué clase se super()referirá la función?
Bueno, la super()función tiene la propiedad de que siempre se refiere a la superclase inmediata . Además, super() la función no solo hace referencia a __init__() , sino que también puede llamar a las otras funciones de la superclase cuando lo necesita.

Aquí está el ejemplo de explicación de las herencias múltiples.

# Program to define the use of super()
# function in multiple inheritance
class GFG1:
    def __init__(self):
        print('HEY !!!!!! GfG I am initialised(Class GEG1)')
  
    def sub_GFG(self, b):
        print('Printing from class GFG1:', b)
  
# class GFG2 inherits the GFG1
class GFG2(GFG1):
    def __init__(self):
        print('HEY !!!!!! GfG I am initialised(Class GEG2)')
        super().__init__()
  
    def sub_GFG(self, b):
        print('Printing from class GFG2:', b)
        super().sub_GFG(b + 1)
  
# class GFG3 inherits the GFG1 ang GFG2 both
class GFG3(GFG2):
    def __init__(self):
        print('HEY !!!!!! GfG I am initialised(Class GEG3)')
        super().__init__()
  
    def sub_GFG(self, b):
        print('Printing from class GFG3:', b)
        super().sub_GFG(b + 1)
  
  
# main function
if __name__ == '__main__':
  
    # created the object gfg
    gfg = GFG3()
  
    # calling the function sub_GFG3() from class GHG3
    # which inherits both GFG1 and GFG2 classes
    gfg.sub_GFG(10)
Producción:

HEY !!!!!! GfG I am initialised(Class GEG3)
HEY !!!!!! GfG I am initialised(Class GEG2)
HEY !!!!!! GfG I am initialised(Class GEG1)
Printing from class GFG3: 10
Printing from class GFG@: 11
Printing from class GFG1: 12

Publicación traducida automáticamente

Artículo escrito por YashKhandelwal8 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *