有人可以給我解釋下面的代碼 TickGenerator從Observer的對象和方法繼承,爲什麼我們需要兩個observer.init?python基本解釋需要
class TickGenerator(Observer):
def __init__(self):
Observer.__init__(self)
self.price = 1000
有人可以給我解釋下面的代碼 TickGenerator從Observer的對象和方法繼承,爲什麼我們需要兩個observer.init?python基本解釋需要
class TickGenerator(Observer):
def __init__(self):
Observer.__init__(self)
self.price = 1000
如果你不叫觀察員。 如下初始化:
class TickGenerator(Observer):
def __init__(self):
self.price = 1000
這意味着你覆蓋TickGenerator。 init方法和觀察者。 init不會被自動調用。
我猜你從哪裏父類的構造函數會被自動調用的語言來。
在Python中,如果覆蓋__init__
方法,則除非明確調用它,否則不會調用父類構造函數。
直到Python 3中,它曾經被稱爲:
def __init__(self, *args, **kwargs):
super(TickGenerator, self).__init__(*args, **kwargs)
新[super()][1]
語法(PEP-3135)就是:
def __init__(self, *args, **kwargs):
super().method(*args, **kwargs)
'Observer .__ init __(self)'是不是調用超類的構造函數? – 0x90 2013-04-06 12:36:50
我想OP的問題是爲什麼他必須根本調用'Observer .__ init __(self)',並且如果他精通父構造函數調用隱式的計算機語言,這是有道理的。 – 2013-04-06 12:38:11
因爲程序員需要觀察類__init__
除了 什麼是在當前類的(TickGenerator)__init__
正在做的工作要做。
調用父類的構造函數的正規途徑是使用'超()'內置。 – 2013-04-06 13:00:36