[pyar] Herencia y métodos __ (double underscore)
Manuel Kaufmann
humitos en gmail.com
Mar Mar 20 13:10:28 ART 2012
Hola lista,
Estoy tratando de resolver un bug de OLPC[1] y me encontré con un
problema de herencia. No estoy seguro si es así como debería funcionar
o estoy meando afuera del tarro o encontré un bug de Python o he
quemado demasiadas neuronas ya.
La cosa es así: tengo una clase Hola que tiene un método "__me_voy" y
una clase Chau que también tiene un método "__me_voy". Chau hereda de
Hola y en el __init__ de Hola se llama a self.__me_voy. ¿Cuál se
debería llamar ahí el de Chau o el de Hola? Para mí el de Chau, pero
para Python (que siempre sabe más que yo) dice que se debe llamar el
de Hola.
Acá el ejemplo en código:
[humitos] [/tmp]$ cat test.py
class Hola:
def __init__(self):
print 'Hola'
self.__me_voy()
def __me_voy(self):
print 'Hola - me voy'
class Chau(Hola):
def __init__(self):
Hola.__init__(self)
def __me_voy(self):
print 'Chau - me voy'
if __name__ == '__main__':
c = Chau()
[humitos] [/tmp]$ python test.py
Hola
Hola - me voy
[humitos] [/tmp]$
Otra cosa que probé fue cambiar el Hola.__init__(self) de la clase Chau por:
super(Chau, self).__init__()
y recibo este error:
[humitos] [/tmp]$ python test.py
Traceback (most recent call last):
File "test.py", line 24, in <module>
c = Chau()
File "test.py", line 16, in __init__
super(Chau, self).__init__()
TypeError: must be type, not classobj
[humitos] [/tmp]$
¿Hay algún alma caritativa que me tire una data sobre esto?
Muchas gracias,
[1] http://bugs.sugarlabs.org/ticket/440
--
Kaufmann Manuel
Blog: http://humitos.wordpress.com/
Portfolio: http://fotos.mkaufmann.com.ar/
PyAr: http://www.python.com.ar/
More information about the pyar
mailing list