[Python-es] Otra vez la herencia múltiple
Beni
camontuyu en yahoo.es
Mar Jul 22 18:47:46 CEST 2008
Tengo este código de ejemplo:
class A(object):
def __init__(self, nombre):
print nombre
class B(object):
def __init__(self, nombre, apellidos):
print nombre, apellidos
class C(A, B):
def __init__(self):
super(C, self).__init__("hola")
class D(B, A):
def __init__(self):
super(D, self).__init__("hola", "adios")
print "C (A, B) - A(nombre) - B(nombre, apellidos) >",
c = C()
print "D (B, A) - A(nombre) - B(nombre, apellidos) >",
d = D()
Devuelve:
C (A, B) - A(nombre) - B(nombre, apellidos) > hola
D (B, A) - A(nombre) - B(nombre, apellidos) > hola adios
A parte de que, parece que sobreescribe los métodos por el orden de la
definción de la clase:
- C(A, B) usa el init de A
- D(B, A) usa el init de B
¿Como puedo llamar a ambos métodos init desde la clase hija con los
parámetros que guste? Debo hacer
class C(A, B):
def __init__():
A.__init__(self, "hola")
B.__init__(self, "hola", "adios")
Si es así, ¿para que sirve el super?. No le veo utilidad (en el nivel de
conocimiento que tengo de python)
Saludo y gracias.
--
Benito Rodríguez Arcos
Más información sobre la lista de distribución Python-es