我會直奔例如不執行的方法:裝飾,以紀念被超過一次,即使所謂的幾次
class Foo:
@execonce
def initialize(self):
print 'Called'
>>> f1 = Foo()
>>> f1.initialize()
Called
>>> f1.initialize()
>>> f2 = Foo()
>>> f2.initialize()
Called
>>> f2.initialize()
>>>
我試圖定義execonce
,但不能寫一個與方法的工作原理。
PS:在__init__
爲initialize
我不能定義代碼有被稱爲初始化對象後的某個時間。 CF - cmdln issue 13
橫向評論:我建議你不要忽略第二個電話。相反,你應該提出異常。如果一個調用者進行了兩次初始化,出現了錯誤,您應該報告而不是默默地忽略它。當然,我不知道你的具體問題。 – 2009-07-06 20:34:51
Stefano,我同意..這對我來說也感覺很奇怪。基本上,測試用例依次調用這些子命令方法(例如:'svn commit'),如下所示:command.do_commit和command.do_update。每個這些子命令都必須調用`initialize`方法(參見cmdln issue 13)。我不想提出異常。爲什麼調用者(測試用例)需要知道這樣的內部細節? – 2009-07-06 20:37:30