在Python中,我创建了3个对象,每个对象都有唯一的标识符.
我在所有这些对象中生成此唯一标识符的方式如下:
class Foo(object):
def __init__(self):
unique_id = hashlib.sha1(str(time.time())).hexdigest()
Run Code Online (Sandbox Code Playgroud)
我像这样一个接一个地创建这些对象:
a = Foo()
b = Foo()
c = Foo()
Run Code Online (Sandbox Code Playgroud)
所有这些实例最终都具有相同的效果,unique_id因为在创建之间没有足够的时间.
我已经使用了sleep(0.1)对象创作,但我确信有更优雅的方法可以解决这个问题.
建议?
Python对象已经有了唯一的标识符,这就是它们的标识符id.只要对象保持存在,这只是唯一的; 的id一个对象被删除后可以重复使用.
您也可以使用uuid标准库中的模块,或者只在类中保留一个计数器:
class Foo(object):
__COUNT = 0
# or: __COUNT = random.randint(0, 2**N - 1)
def __init__(self):
self.unique_id = self.__COUNT # or take the SHA1 of the count
type(self).__COUNT += 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
568 次 |
| 最近记录: |