class Madre:
def __init__(self):
print("Soy Madre")
class Hijo(Madre):
pass
hijo = Hijo() # hijo hereda de la clase Madre y por eso dice Soy Madre
Soy Madre
Podemos sobrescribir en la clase Hijo los métodos de la clase Madre, para conseguir que diga 'Soy Hijo'.
class Madre:
def __init__(self):
print("Soy Madre")
class Hijo(Madre):
def __init__(self): # sobrescribimos el método constructor
print("Soy Hijo")
hijo = Hijo()
Soy Hijo
Ahora no vamos a sobrescribir completamente el método constructor de la clase Madre sino extenderla, en este caso haremos uso de la función super()
que es un acceso directo a la superclase.
class Madre:
def __init__(self):
print("Soy Madre")
class Hijo(Madre):
def __init__(self):
super().__init__() # extendemos el método constructor de la clase Madre
print("Soy Hijo")
hijo = Hijo()
Soy Madre Soy Hijo
Vamos a crear la clase Padre y ahora la clase Hijo heredará de ambas, primero de Padre y luego de Madre. El orden importa ya que la primera que pongamos tendrá prioridad a igualdad en el nombre de los métodos o atributos utilizados.
super()
¶class Madre:
def __init__(self):
print("Soy Madre")
class Padre:
def __init__(self):
print("Soy Padre")
class Hijo(Padre, Madre): # prioriza al primera que se pone
def __init__(self):
super().__init__() # extendemos el método constructor
print("Soy Hijo")
hijo = Hijo()
Soy Padre Soy Hijo
Madre
¶Si no queremos usar super()
y queremos usar el constructor de Madre pondremos en lugar de super()
la palabra Madre
y además tendremos que pasar como argumento un self
a la clase Madre ya que super lo hace implícitamente.
class Madre:
def __init__(self):
print("Soy Madre")
class Padre:
def __init__(self):
print("Soy Padre")
class Hijo(Padre, Madre):
def __init__(self):
Madre.__init__(self) # extendemos el constructor de Madre
print("Soy Hijo")
hijo = Hijo()
Soy Madre Soy Hijo
Podemos llamar tanto a la clase Madre como a la clase Padre usando sus métodos y constructores.
class Madre:
def __init__(self):
print("Soy Madre")
class Padre:
def __init__(self):
print("Soy Padre")
class Hijo(Padre, Madre):
def __init__(self):
Madre.__init__(self) # extendemos el constructor de Madre
Padre.__init__(self) # extendemos el constructor de Padre
print("Soy Hijo")
hijo = Hijo()
Soy Madre Soy Padre Soy Hijo