如何通过覆盖__add__方法添加一个类的2个对象?

时间:2014-06-13 07:51:05

标签: python

我遇到了这个问题并试图找到它的解决方案,但我无法做到。 有什么帮助吗?谢谢

1 个答案:

答案 0 :(得分:3)

这是一个非常蹩脚的例子......

class A(object):

   def __init__(self, value):
       self.value = value

   def __add__(self, other):
       return A(self.value + other.value)

a = A(1)
b = A(2)
c = a + b
print c.value  # 3

最终,这几乎是所有钩子方法的工作方式,因此尝试理解它是有利的。您可以在类上定义方法,无论它返回什么,都是操作的结果。另一种思考方式是:

c = a + b

c = type(a).__add__(a, b) 1

相同

1 这不是一个完整的故事 - 你可以用NotImplemented和{做一些非常有趣(也很重要)的东西{1}}等等,但在继续讨论该部分之前先掌握这一部分......