25
我有這樣的代碼:如何避免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__()
實例化B爲運行預期,但具體使用C無限遞歸併導致堆棧溢出。我該如何解決這個問題?
首先...用超級調用init是互聯網決定必須存在的一個主要問題。托馬斯正在描述它的作用......但是,爲什麼你要用init來運行一個超級用戶呢?這不是它的目的。 (該死的確定爲輸入的默認值)
想想這個......當你超級初始化時......你調用基類init,可能覆蓋你所做的所有工作。如果你堅持在init中使用super,請正確執行。 – 2010-12-08 17:56:26
Ebral教授,請告訴我們,如果我們必須使用它的正確方法。 – nmz787 2014-06-24 03:22:09
@ nmz787:在執行本地初始化之前,應該先調用super,問題會以相反的方式進行......好吧!我應該編輯這個問題,因爲這是不好的做法,不應該作爲例子。 – kriss 2015-09-08 09:57:07