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