El día 1 de febrero de 2011 14:31, Andrey Antoukh <and...@gmail.com> escribió: > No se a que te refieres con que no es facil de entender, pero lo que > acabas de explicar, lo explica claramente el ejemplo..., solo que tu > lo has hecho con palabras. > > Una cosa es que quiera profundizar, y otra cosa es que quiera saber > para que sirve en su esencia.
En una cosa tienes razón: es mil veces preferible ver código que expresarlo sólo con palabras. Pero tu código no explica correctamente para qué sirve de verdad super(), por lo siguiente: 1) falta código que ilustre su empleo en herencia múltiple, algo que da sentido al uso de super() frente al sistema anterior de acceder directamente a los métodos de la superclase 2) usar super(self.__class__, self) es inoperante en herencia múltiple e ilustra que realmente no has entendido bien el concepto No tengo tiempo ahora para poner un ejemplo completo, así que lo propongo como ejercicio: Supongamos que tenemos 4 clases: class A(object): def __init__(self):pass class B(A): def __init__(self): super(B, self).__init__() class C(A): def __init__(self): super(C,self).__init__() class D(B,C): def __init__(self): super(D,self).__init__() d=D() Preguntas: 1) ¿en qué orden se ejecutarán los métodos de inicialización? (pista: D.__mro__) 2) ¿qué pasa cuando en la clase B cambiamos super(B,self) por super(self.__class__,self)? _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/