如何在Python类中创建递增ID

53 投票
11 回答
87995 浏览
提问于 2025-04-15 12:29

我想为我创建的每个对象生成一个独特的ID - 这是我的类:

class resource_cl :
    def __init__(self, Name, Position, Type, Active):
        self.Name = Name
        self.Position = Position
        self.Type = Type
        self.Active = Active

我希望有一个自增的ID,每次我创建这个类的新实例时,它都会自动增加,比如:

resources = []
resources.append(resource_cl('Sam Sneed', 'Programmer', 'full time', True))

我知道可以引用resource_cl,但接下来该怎么做我不太确定...

11 个回答

72

简洁而优雅:

import itertools

class resource_cl():
    newid = itertools.count().next
    def __init__(self):
        self.id = resource_cl.newid()
        ...
77

如果你在Python 3中尝试最高票的答案,你会遇到一个错误,因为.next()这个方法已经被移除了。

你可以试试下面的方法:

import itertools

class BarFoo:

    id_iter = itertools.count()

    def __init__(self):
        # Either:
        self.id = next(BarFoo.id_iter)

        # Or
        self.id = next(self.id_iter)
        ...
18

你知道Python里面有一个叫做id函数吗?你可以用它来代替你之前提到的计数器的想法吗?

class C(): pass

x = C()
y = C()
print(id(x), id(y))    #(4400352, 16982704)

撰写回答