如何在Python类中创建递增ID
我想为我创建的每个对象生成一个独特的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)