要定義在下面的語句一類行爲:+ =在python運營商__setitem__(除了在原地方括號中)
my_object[item] = ...
我知道我需要定義__setitem__
方法。
我需要什麼樣的方法來定義下面的語句:
my_object[item] += ...
要定義在下面的語句一類行爲:+ =在python運營商__setitem__(除了在原地方括號中)
my_object[item] = ...
我知道我需要定義__setitem__
方法。
我需要什麼樣的方法來定義下面的語句:
my_object[item] += ...
my_object
需要__getitem__
檢索my_object[item]
和__setitem__
的初始值以設置新值。
此外,Python需要一種方法來執行添加。 my_object[item]
需要執行與__add__
或__iadd__
的添加,或者+=
右側的對象需要實現__radd__
。
__setitem__
將覆蓋你對於你的容器類;當你做任何擴展的任務時,就像調用常規任務一樣。據你的班級所知,x[i] += 1
和x[i] = x[i] + 1
之間沒有區別。
如果您需要從=
或-=
區別對待+=
,這是由項目的類的特殊方法處理。
您正在尋找'__iadd__'我相信。 – idjaw
這個問題已被回答[之前](http://stackoverflow.com/questions/1047021/overriding-in-python-iadd-method) – Hang
沒有'__isetitem__'這樣的事情。對於'my_object [...]',你可以定義'__setitem__'和'__getitem__',但是要讓'my_object [item] + = ...'不同於'my_object [item] = my_object [item] + .. .',你需要修改'my_object [item]'是一個實例的類。 – zondo