multiple herencia python oop multiple-inheritance super

herencia multiple python



Cómo evitar la recursión infinita con super()? (1)

Cuando la instanciación de C llama a B.__init__ , self.__class__ seguirá siendo C, por lo que la llamada a super () lo devuelve a B.

Cuando llame a super (), use los nombres de clase directamente. Entonces en B, llame a super(B, self) , en vez de a super(self.__class__, self) (y para una buena medida, use super(C, self) en C). Desde Python 3, puedes usar super () sin argumentos para lograr lo mismo

Tengo un código como este:

class A(object): def __init__(self): self.a = 1 class B(A): def __init__(self): self.b = 2 super(self.__class__, self).__init__() class C(B): def __init__(self): self.c = 3 super(self.__class__, self).__init__()

La creación de instancias B funciona como se esperaba pero la instanciación de C recursó infinitamente y causa un desbordamiento de la pila. ¿Como puedo resolver esto?