TypeError:/不支持的操作数类型:

时间:2016-11-23 17:19:00

标签: python generator

我有" TypeError:/:"不支持的操作数类型对于此代码

class Foo(object):
    def __add__(self, other):
        return print("add")
    def __div__(self, other):
        return print("div")


Foo() + Foo()
add

**但/ **

Foo() / Foo()
Traceback (most recent call last):

  File "<ipython-input-104-8efbe0dde481>", line 1, in <module>
    Foo() / Foo()

TypeError: unsupported operand type(s) for /: 'Foo' and 'Foo'

2 个答案:

答案 0 :(得分:13)

Python3分别为__truediv____floordiv__运算符使用特殊的分部名称:///

在Python3中,/是一个真正的分区,5/2将返回浮点数2.5。同样地,5//2 floor 除法或整数除法,因为它总是会返回一个int,在本例中为2

在Python2中,/运算符的工作方式与{3}}运算符在Python3中的工作方式相同。由于运算符在不同版本之间的更改方式,因此删除了//名称以避免歧义。

参考:http://www.diveintopython3.net/special-method-names.html#acts-like-number

答案 1 :(得分:0)

在python3中,您可以使用 truediv

class Foo(object):
    def __add__(self, other):
        return print("add")
    def __truediv__(self, other):
        return print("div")