Ho codice in questo modo:Come evitare la ricorsione infinita con super()?
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__()
Instantiating B funziona come previsto, ma un'istanza C ricorsivo infinitamente e causa un overflow dello stack. Come posso risolvere questo?
Prima di tutto ... chiamare init con super è un grosso problema che Internet ha deciso deve esistere. Funziona il Thomas sta descrivendo ... tuttavia, perché stai facendo funzionare un super con un init? Non è quello a cui è destinato. (Damn OK come impostazione predefinita per entrare)
Pensa solo a questo ... quando super init ... chiami l'init delle classi base, probabilmente sovrascrivendo tutto il lavoro che hai fatto. Se insisti a usare super con init, fallo correttamente. –
Prof. Ebral, per favore dicci il modo corretto di usarlo se dobbiamo. – nmz787
@ nmz787: la chiamata a super dovrebbe essere fatta prima di eseguire le inizializzazioni locali, le domande fanno il contrario ... Bene! Probabilmente dovrei modificare la domanda perché è una cattiva pratica e non dovrebbe essere lasciata come esempio. – kriss