class car(object):
def read_spec_and_populate_db():
spec = read_from_file(spec.yaml)
populate_db(spec)
class awd(car):
super(awd, self).read_spec_and_populate_db()
def foo(self):
...
class fwd(car):
super(fwd, self).read_spec_and_populate_db()
def bar(self):
...
awd
類和fwd
可以在不同的時間被實例化或僅它們中的一個可以被實例化。現在,有沒有辦法限制基類方法read_spec_and_populate_db()只執行一次?如何限制基類的方法被運行一次
我在SO中查找過,發現here。想看看有沒有其他的選擇。
編輯:不,我反對它。除了使用國旗之外,我正在尋找創意。我目前的實施是在課堂上使用一個標誌。
,並解釋:你必須跟蹤「已讀」某種程度上,和標誌是一個非常清晰的方式正確地溝通。不要只爲魔術而做魔術。 – MatsLindh
這很好,除了一個類方法更清潔IMO,不是嗎?如果是,更新您的答案,我會刪除我的。我已經向你投票了 –
classmethod不適用於繼承。當你首先創建'awk'的實例時,它會創建'awk.populated = True'。然後當你創建一個'car'的實例時,'car.populated'仍然是錯誤的,並且規格將被第二次讀取。 –