+ = __setitem__的python中的运算符(为方括号添加到位)

时间:2016-03-25 21:43:05

标签: python python-2.7 operator-overloading

在以下语句中定义类行为:

my_object[item] = ...

我知道我需要定义__setitem__方法。

我需要为以下语句定义什么方法:

my_object[item] += ...

2 个答案:

答案 0 :(得分:4)

my_object需要__getitem__来检索my_object[item]__setitem__的初始值以设置新值。

此外,Python需要一种方法来执行添加。 my_object[item]需要使用__add____iadd__来实现添加,或+=右侧的对象需要实现__radd__

答案 1 :(得分:1)

__setitem__将涵盖您的容器类;当你像常规任务那样进行任何增强任务时调用它。就你的班级而言,x[i] += 1x[i] = x[i] + 1之间没有区别。

如果您需要以+==的方式区别对待-=,则由项目的类的特殊方法处理。