在Python中生成连续id的最佳方法

时间:2011-08-24 19:53:47

标签: python

给定一个具有属性self.id的类,我需要使用从0开始的计数器填充该属性,并且该类的所有对象在程序的单次运行期间需要唯一的id。这样做的最佳/最pythonic方式是什么?目前我使用

def _get_id():
    id_ = 0
    while True:
       yield id_
       id_ += 1
get_id = _get_id()

在课堂外定义

self.id = get_id.next()
在课堂'__init__()

。有一个更好的方法吗?发电机可以包含在班级中吗?

2 个答案:

答案 0 :(得分:6)

使用itertools.count

from itertools import count

class MyClass(object):
    id_counter = count().next
    def __init__(self):
        self.id = self.id_counter()

答案 1 :(得分:4)

为什么要使用迭代器/发生器?他们做的工作,但是不是太过分了吗?什么错了

class MyClass(object):
  id_ctr = 0
  def __init__(self):
    self.id = MyClass.id_ctr
    MyClass.id_ctr += 1