在以下语句中定义类行为:
my_object[item] = ...
我知道我需要定义__setitem__
方法。
我需要为以下语句定义什么方法:
my_object[item] += ...
答案 0 :(得分:4)
my_object
需要__getitem__
来检索my_object[item]
和__setitem__
的初始值以设置新值。
此外,Python需要一种方法来执行添加。 my_object[item]
需要使用__add__
或__iadd__
来实现添加,或+=
右侧的对象需要实现__radd__
。
答案 1 :(得分:1)
__setitem__
将涵盖您的容器类;当你像常规任务那样进行任何增强任务时调用它。就你的班级而言,x[i] += 1
和x[i] = x[i] + 1
之间没有区别。
如果您需要以+=
或=
的方式区别对待-=
,则由项目的类的特殊方法处理。