2
我有一個類可以計算一個可能可以改善的移動平均數。平均窗口的大小必須靈活。因此 它目前是通過設置窗口,然後將其發送的大小更新:我可以創建一個類似不可變(float)的類嗎?
twoday = MovingAverage(2) # twoday.value is None
twoday = twoday.update(10) # twoday.value is None
twoday = twoday.update(20) # twoday.value == 15
twoday = twoday.update(30) # twoday.value == 25
我認爲這將是冷靜,如果它的工作更多的東西是這樣的:
twoday = MovingAverage(2) # twoday is None
twoday += 10 # twoday is None
twoday += 20 # twoday == 15
twoday += 30 # twoday == 25
這是愚蠢的? 這可能嗎?
謝謝。我也看到了這一點,並認爲它,但因爲這是我第一次害怕 - - )...但另一個問題是訪問器...使用實例名稱「twoday」而不是「twoday.value」檢索當前值「? – 2012-07-31 08:47:14
'__iadd__'可能是你的意思 – jamylak 2012-07-31 08:48:16
@JohnMee:這取決於你的意思是「檢索」。您可以將您的'MovingAverage'類設置爲在打印時使用其當前值,或者將其轉換爲字符串(通過給它一個'__str__'方法),但無法以任何方式使它像整數一樣運行,重新賦予添加事物的特殊含義。你可能需要選擇一個或另一個! – Blckknght 2012-07-31 08:52:10