我正在尝试使用_lt__方法来比较类对象并进行相应的排序。但是到目前为止还没能做到
class Test:
def __init__(self,x):
self.x = x
def __lt__(self,other):
return self.x < other.x
t1 = Test(10)
t2 = Test(12)
lis = [t1,t2]
lis.sort()
print(lis)
我的输出为
[<__main__.Test object at 0x7fd4c592fb70>, <__main__.Test object at 0x7fd4c592fb38>]
我想也许我需要给对象一个字符串表示。所以我做了
def __str__(self):
return "{}".format(self.x)
我仍然得到相同的输出
[<__main__.Test object at 0x7f212594bac8>, <__main__.Test object at 0x7f212594bc50>]
我做错了什么?
答案 0 :(得分:1)
__repr__
而不是__str__
表示:
class Test:
def __init__(self,x):
self.x = x
def __lt__(self,other):
return self.x < other.x
def __repr__(self):
return "{}".format(self.x)
t1 = Test(10)
t2 = Test(12)
lis = [t1,t2]
lis.sort()
print(lis) # [10, 12]