爲什麼我在Python代碼中看不到以下內容?爲什麼不將__init__分配給超類的__init__?
class A:
def __init__(self, ...):
# something important
class B(A):
__init__ = A.__init__
它似乎在我的Python 2.5,2.6,2.7和PyPy 1.8的框上工作。
我看到下面有很多,正確做法:使用super
class B(A):
def __init__(self, *args, **kwargs):
A.__init__(self, *args, **kwargs)
什麼的。
我喜歡我的第一個例子更好(明確比隱含更好!),但我擔心這是不是因爲某些原因猶太教。它有什麼錯或不好嗎?
編輯:是的,我的意思A.__init__
,不self.__init__
我不明白'__init__ = self .__ init__'會在這種情況下做什麼。 'self'不是Python中的關鍵字。 – omz
我想,也許'__init__ = A .__ init__'? – 2012-05-23 22:17:08
有什麼理由打擾嗎?如果你沒有在你的子類中聲明一個,父類的構造函數將被繼承。如果你正在做額外的事情,你只需要重寫它。 – Blckknght