运算符重载python自定义类

时间:2014-07-03 23:19:14

标签: class python-2.7 operator-overloading

说我想要为我创建的某个类重载一个运算符(现在就说+

class A (object):
    #code here

然后:

a = A()
b = A()

我该怎么做才能定义:

c = a + b

或沿着这些方向的东西? (注意:这个问题纯粹是理论上的,我可能会在某个时候使用它,但目前还没有(除非它非常简单,我真的需要使用它))

(p.s。如果可以对andornotstr,e.t.c等其他内容执行此操作。

1 个答案:

答案 0 :(得分:3)

由于A是二元运算符的第一个操作数,因此您应该定义A.__add__()。如果A是第二个操作数,并且无法更改第一个操作数的类,则必须定义A.__radd__()

Full reference for magic methods