python - 如何将类返回值与 float 或整数进行比较?

标签 python class integer compare

我想比较类的 __repr__ 与 float 或整数。

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

最佳答案

都没有。

__repr__ 仅在您需要字符串并获取对象的情况下调用,例如来自 print 或作为命令行上的单个表达式,并且意味着作为一个对象的人类可读表示,它(希望)可以从中重建。

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

<__main__.TestClass at 0x20feb8836d8>

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

因此,如果您定义了 __eq__,它只会评估为 True,相等方法:

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

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

print(TestClass() == 5)

输出:

True

关于python - 如何将类返回值与 float 或整数进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55876434/

相关文章:

c# - 类约束必须在任何其他约束之前

c - 如何在C中创建一个二维数组?

python - 如何用Python画一个简单的Argand图?

python - 可选的多个返回值

python - 我该怎么做才能知道 Beautifulsoup 中家长的类(class)名称?

java - 将分数转换为小数

c++ - 超过 4 个字节的整数是什么类型?

python - 在 Python 3 和 PyQt 中使用 QProcess.finished()

java - 当我尝试在 java 中调用该类时,为什么我会得到一个空白表单

java - 当构造函数具有类的类型时,这意味着什么?