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?