Ang*_*elo 1 python integer compare class
我想将__repr__类的浮点数或整数进行比较。
class TestClass:
def __init__(self, a = 5):
self.a = a
def __repr__(self):
return self.a
Run Code Online (Sandbox Code Playgroud)
显然会返回错误,因为a不是string:
TypeError: __repr__ returned non-string (type int)
Run Code Online (Sandbox Code Playgroud)
如果将其设置为字符串,则打印正确:
>>> TestClass()
5
Run Code Online (Sandbox Code Playgroud)
但打印结果不可比:
>>> TestClass() == 5
False
Run Code Online (Sandbox Code Playgroud)
我应该用什么来比较类返回使它TestClass() == 5到True?
都不行
__repr__仅在需要字符串并获取对象的情况下调用,例如print从命令行或从命令行作为单个表达式获取,并且被表示为对象的人类可读表示(希望可以从中重建)。
回想一下,在不重载的情况下__repr__,从命令行获得的是一个字符串,该字符串表示对象的标识(与值相反),例如:
<__main__.TestClass at 0x20feb8836d8>
Run Code Online (Sandbox Code Playgroud)
另一方面,您正在做的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)
Run Code Online (Sandbox Code Playgroud)
输出:
True
Run Code Online (Sandbox Code Playgroud)