在python中,您可以在类中实现特殊方法来模拟数字类型。添加示例:
import numbers
class A(object):
def __init__(self, value):
self.value = value
def __add__(self, other):
if isinstance(other, A):
return A(self.value + other.value)
elif isinstance(other, numbers.Number):
return A(self.value + other)
else:
raise TypeError("TypeError: unsupported operand type(s) for +: 'A' and '{}'".format(type(other)))
my_object = A(5)
new_object = my_object + 5
print new_object.value # 10
new_object_2 = 5 + new_object # This will fail
我的问题是,如果+我的对象在左边,只能在一个“方向”工作。如果我们尝试1 + A(1)
则会失败。
我的问题是他们告诉python如果object1 + object2
失败到一个TypeError尝试object2 + object1
?
注1:我没有按添加顺序选择,我无法更改,添加是在模块提供的功能内完成的。
注2:两个对象中的一个是我定义的类,所以我可以更改它。
提前致谢。