TypeError,带有模拟数字类型

时间:2018-05-03 08:38:32

标签: python typeerror numeric

在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:两个对象中的一个是我定义的类,所以我可以更改它。

提前致谢。

0 个答案:

没有答案