如何比较带有浮点数或整数的类返回?

时间:2019-04-27 01:03:07

标签: python class integer compare

我想将类的__repr__与浮点数或整数进行比较。

class TestClass:   
    def __init__(self, a = 5): 
        self.a = a     
    def __repr__(self):
        return self.a

这显然会返回错误,因为a不是string

TypeError: __repr__ returned non-string (type int)

如果我将其设置为字符串,则打印正确:

>>> TestClass()
5

但打印结果不可比拟:

>>> TestClass() == 5
False

我应该使用什么来比较将类返回的类TestClass() == 5True

1 个答案:

答案 0 :(得分:5)

都不是。

{__repr__仅在需要字符串并获取对象的情况下调用,例如从print或在命令行上作为单个表达式获取对象 表示可以(希望)可从其重建的对象的人类可读表示形式。

回想一下,在不重载__repr__的情况下,从命令行获得的是一个字符串,该字符串表示对象的 identity ,而不是 value ,例如:

<__main__.TestClass at 0x20feb8836d8>

另一方面,您对TestClass() == 5所做的只是一个比较。

因此,如果您定义了相等方法True,它将只会得出__eq__

class TestClass:   
    def __init__(self, a = 5): 
        self.a = a    

    def __eq__(self, other):
        return self.a == other

print(TestClass() == 5)

输出:

True