给定一个具有属性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__()
中。有一个更好的方法吗?发电机可以包含在班级中吗?
答案 0 :(得分:6)
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