Python 如何为对象列表返回int类型表示

Python 如何为对象列表返回int类型表示,python,Python,输出对象列表时,如何返回对象的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 lis

输出对象列表时,如何返回对象的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")
其中,对象列表是
Passport
实例列表。但这会产生一个错误
\uuuuuu repr\uuuuuuuuuuuuuuuuuuuuuuuuuuuu。返回的非字符串(int类型)


我可以使用字符串来解决这一问题,但我想知道int类型是否可行?

您可以检查对象ID的并行列表

if any(id == pp.id for pp in list_of_objects):
    print("true")

您可以检查对象ID的并行列表

if any(id == pp.id for pp in list_of_objects):
    print("true")
需要返回对象的字符串表示形式。返回其他类型不是有效的
\uu repr\uu
实现

如果您想要一种返回某个数字的方法,请添加一个自定义方法

顺便说一句,注意实现
\uu repr\uu
并不是让对象列表中的
id起作用的方法。要使其工作,您应该实现
\uuuuuuhash\uuuuuuu
\uuuuuueq\uuuuu
。但在这一点上,你应该认真考虑一下,如果你想
5==Passport(5)
是真的;可能不会。因此,您应该通过明确查看
id
属性来改变支票的工作方式

您可以执行以下操作,而不是执行对象列表中的id的

if any(lambda x: x.id == id, list_of_objects):
    print('true')
需要返回对象的字符串表示形式。返回其他类型不是有效的
\uu repr\uu
实现

如果您想要一种返回某个数字的方法,请添加一个自定义方法

顺便说一句,注意实现
\uu repr\uu
并不是让对象列表中的
id起作用的方法。要使其工作,您应该实现
\uuuuuuhash\uuuuuuu
\uuuuuueq\uuuuu
。但在这一点上,你应该认真考虑一下,如果你想
5==Passport(5)
是真的;可能不会。因此,您应该通过明确查看
id
属性来改变支票的工作方式

您可以执行以下操作,而不是执行对象列表中的id的

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

\uuuu repr\uuu
必须返回一个
str
,如您所见

做你所要求的事情的正确方法是:

list_of_object_ids = [p.id for p in (Passport(19181), Passport(29191), Passport(39191))]
if id in list_of_objects:
    print("true")

\uuuu repr\uuu
必须返回一个
str
,如您所见

做你所要求的事情的正确方法是:

list_of_object_ids = [p.id for p in (Passport(19181), Passport(29191), Passport(39191))]
if id in list_of_objects:
    print("true")

\uuuu repr\uuuuu()
需要返回字符串,
返回str(self.id)
有什么问题?你能举个例子说明你在找什么吗?
\uuuuu repr\uuuu()
需要返回字符串,
返回str(self.id)有什么问题吗
?你能举个例子说明你在寻找什么吗?是的,我可以使用类似于
\uuuuuhash\uuuuuu
的东西,但我希望实际的列表表示是一组数字,即
如果对象列表中有id。\uuuuu hash\uuuu:
这是否意味着我需要创建另一个循环?i、 e.删除
\uuuu repr\uuuuuu
然后再次循环。将其作为字符串返回,稍后再强制转换?@busterdust是的,我知道我可以这样做,但不知道是否有其他解决方案。只需创建一个get\u id()方法
def get_id():return self.id
是的,我可以使用类似于
\uuuuu hash\uuuu
的东西,但我希望实际的列表表示形式是一组数字,即
如果id在对象列表中。\uu hash\uu:
这是否意味着我需要创建另一个循环?i、 e.删除
\uuuu repr\uuuuuu
然后再次循环。将其作为字符串返回,稍后再强制转换?@busterdust是的,我知道我可以这样做,但不知道是否有其他解决方案。只需创建一个get\u id()方法
def get_id():返回self.id