J'ai code comme ceci:Comment éviter la récursion infinie avec 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__()
instanciation B fonctionne comme prévu, mais l'instanciation C récursifs infiniment et provoque un débordement de pile. Comment puis-je resoudre ceci?
Tout d'abord ... appel init avec super est un problème majeur que l'Internet a décidé doit exister. Cela fonctionne le Thomas décrit ... cependant, pourquoi exécutez-vous un super avec un init? Ce n'est pas ce à quoi il est destiné. (Damn OK par défaut pour entrer)
Pensez juste à ceci ... quand vous super init ... vous appelez les init de classes de base, écrasant peut-être tout le travail que vous avez fait. Si vous insistez pour utiliser super avec init, faites-le correctement. –
Prof. Ebral, s'il vous plaît dites-nous la bonne façon de l'utiliser si nous devons. – nmz787
@ nmz787: appel à super devrait être fait avant d'effectuer des initialisations locales, les questions le font dans l'autre sens ... Eh bien! Je devrais probablement éditer la question car c'est une mauvaise pratique et ne devrait pas être considérée comme un exemple. – kriss