Python subclase hereda la clase padre Constructor Descripción

notas 

Caso 1:

        Las subclases deben llamar automáticamente el método de la clase padre: sub-clase no anula __init método __ (), las subclases de instancia, llamará automáticamente al método __init clase padre __ ().

Caso 2:

        Subclase no necesita llamar automáticamente a los métodos de la clase padre: Las subclases método de método de reemplazo __init __ (), las subclases de instancia no se llamará automáticamente al __init clase padre __ () a.

Caso tres:

        Subclases anular el __init __ () método y llamar al método de los padres: usando súper Palabras clave: super (sub-clase, la auto) .__ init __ (parámetro 1, parámetro 2, ....)


class Son(Father):
  def __init__(self, name):   
    super(Son, self).__init__(name)

Si necesita llamar a las subclases del constructor de la clase padre necesita para construir de forma explícita la clase padre o constructor de la clase padre no se reescribe.

Subclase no anula __init__, subclases caso de llamada de forma automática la definición de la clase padre de __init__.

Ejemplos

class Father(object): 
    def __init__(self, name): 
        self.name=name 
        print ( "name: %s" %( self.name) ) 

    def getName(self): 
        return 'Father ' + self.name 


class Son(Father): 
    def getName(self):
        return 'Son '+self.name


if __name__=='__main__': 
    son=Son('runoob') 
    print ( son.getName() )

La salida es:

name: runoob
Son runoob

Si se vuelve a escribir el __init__, subclase instanciable, no va a llamar a la __init__ padres ya definido sintaxis es la siguiente:

Ejemplos

class Father(object): 
    def __init__(self, name): 
        self.name=name 
        print ( "name: %s" %( self.name) ) 
    
    def getName(self): 
        return 'Father ' + self.name 

class Son(Father): 
    def __init__(self, name): 
        print ( "hi" ) 
        self.name = name d

    ef getName(self): 
        return 'Son '+self.name 

if __name__=='__main__': 
    son=Son('runoob') 
    print ( son.getName() )

La salida es:

hi
Son runoob

Si se vuelve a escribir el __init__, para heredar el constructor de la clase padre, puede utilizar la palabra clave super:

super(子类,self).__init__(参数1,参数2,....)

También hay un texto clásico:

父类名称.__init__(self,参数1,参数2,...)

Ejemplos

class Father(object): 
    def __init__(self, name): 
        self.name=name 
        print ( "name: %s" %( self.name)) 

    def getName(self): 
        return 'Father ' + self.name 

class Son(Father): 
    def __init__(self, name): 
        super(Son, self).__init__(name) 
        print ("hi") 
        self.name = name 

    def getName(self): 
        return 'Son '+self.name 

if __name__=='__main__': 
    son=Son('runoob') 
    print ( son.getName() )

La salida es:

name: runoob
hi
Son runoob
Publicados 136 artículos originales · ganado elogios 71 · vistas 160 000 +

Supongo que te gusta

Origin blog.csdn.net/u012308586/article/details/105063942
Recomendado
Clasificación