Skip to main content
 首页 » 编程设计

python之如何返回对象列表的 int 类型表示

2025年05月04日14pengyingh

当输出对象列表时,如何返回对象的 int 类型表示?

我已经试过了:

class Passport(object): 
    def __init__(self, my_id): 
        self.id = my_id 
 
    def __repr__(self): 
        return int(self.id) 
 
 
 
list_of_objects = [ 
Passport(19181), 
Passport(29191), 
Passport(39191) 
] 
 
if id in list_of_objects: 
    print("true") 

其中 list_of_objects 是 Passport 实例的列表。但这会产生错误 __repr__ returned non-string (type int)。

我可以为两者都使用字符串来解决这个问题,但我想知道是否可以使用 int 类型?

请您参考如下方法:

__repr__ 需要 返回对象的字符串 表示。返回不同的类型不是 __repr__ 的有效实现。

如果您想要一种方法来返回一些数字,那么添加一个执行该操作的自定义方法。

顺便说一句,请注意,实现 __repr__ 并不是使 id in list_of_objects 工作的方法。为此,您应该实现 __hash__ 和 __eq__。但是到那时,您真的应该考虑是否希望 5 == Passport(5) 为真;可能不会。因此,您应该通过显式查看 id 属性来更改检查的工作方式。

您可以执行以下操作,而不是 if id in list_of_objects:

if any(lambda x: x.id == id, list_of_objects): 
    print('true')