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/

Responder a