在你打電話給super()之前,你有沒有想做一些處理的情況?在python中,super()總是在方法中首先調用。是否有情況應該在以後被調用?
這是一個人爲的例子。有更好的例子嗎?這是否被認爲是pythonic?
class Base(object):
def __init__(self, name):
print "Base %s created" % name
self._name = name
class UpperBase(A):
""" Similar to base but the name is in uppercase. """
def __init__(self, name):
name = name.upper()
super(UpperBase, self).__init__(name)
您的示例恰恰*是在您向父類上調之前執行其他計算的情況。我知道我經常在定義'Thread'子類時經常這樣做 - 我通常在那裏有一些邏輯來根據構造函數參數給線程一個有意義的名字。 – ncoghlan 2011-04-12 12:57:51
我想你應該在調用'super()..'方法之前避免*修改*實例狀態。所以只需對參數(變換,驗證等)進行一些計算即可,但不應改變實例的狀態。 – frans 2017-08-30 13:48:54
@frans爲什麼? (我看過很多代碼都是這樣做的) – TomOnTime 2017-08-30 14:23:44