Duda en herencia múltiple con Python
Publicado por Ángel Luis (4 intervenciones) el 03/03/2010 00:02:24
Hola buenas noches. Veréis, necesito algo de ayuda porque no consigo aclararme con la herencia múltiple en Python. Actualmente trabajo con la versión 2.5.4, en Windows. Tengo el siguiente código, escrito en IDLE:
class e1(object):
def __init__(self):
self.var1 = None
self.var2 = None
self.var3 = None
class e2(object):
def __init__(self):
self.var2 = ''
class e3(e2, e1): pass
aux = e3()
# Y cuando voy a acceder a un atributo heredado de e1 me dice que no existe. Por ejemplo:
print aux.var1
Devuelve el siguiente error:
Traceback (most recent call last):
File "D:\python\poo\ej2.py", line 44, in <module>
print aux.var1
AttributeError: 'e3' object has no attribute 'var1'
Por otra parte, si cambio la definición de la clase e3, de manera e3(e1,e2) entonces si que lo hace bien, y no me reconoce el atributo de la clase e1 (algo normal, porque hace overrride). Según lo que he visto por ahí el MRO va de izquierda a dercha y en profundidad. Sin embargo aquí parece que se sobreescriben los atributos. No pasa con lo métodos, creo ver.
Espero podáis ayudarme, ya que llevo todo el día dándole vueltas y no consigo aclararme. Muchas gracias de antemano.
Un saludo.
Ángel Luis.
http://elviajedelnavegante.blogspot.com
class e1(object):
def __init__(self):
self.var1 = None
self.var2 = None
self.var3 = None
class e2(object):
def __init__(self):
self.var2 = ''
class e3(e2, e1): pass
aux = e3()
# Y cuando voy a acceder a un atributo heredado de e1 me dice que no existe. Por ejemplo:
print aux.var1
Devuelve el siguiente error:
Traceback (most recent call last):
File "D:\python\poo\ej2.py", line 44, in <module>
print aux.var1
AttributeError: 'e3' object has no attribute 'var1'
Por otra parte, si cambio la definición de la clase e3, de manera e3(e1,e2) entonces si que lo hace bien, y no me reconoce el atributo de la clase e1 (algo normal, porque hace overrride). Según lo que he visto por ahí el MRO va de izquierda a dercha y en profundidad. Sin embargo aquí parece que se sobreescriben los atributos. No pasa con lo métodos, creo ver.
Espero podáis ayudarme, ya que llevo todo el día dándole vueltas y no consigo aclararme. Muchas gracias de antemano.
Un saludo.
Ángel Luis.
http://elviajedelnavegante.blogspot.com
Valora esta pregunta


0