当输出对象列表时,如何返回对象的 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')
