我想将类的__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() == 5
与True
?
答案 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