Python:数据类的唯一整数?

标签 python python-dataclasses

我有以下数据类。

@dataclass(frozen=True)
class myDataClass:
    x: float
    y: float
我想要的是,每次我创建这个类的对象时,它都会被标记一个从 0 开始递增的唯一 id。
所以,我第一次说first = myDataClass(0, 1)那么我应该有 first.id == 0 ,然后如果我说 second = myDataClass(0, 1) , 我应该得到 second.id == 1 .

最佳答案

可以使用 an itertools.count() instance's __next__ method 生成线程安全的唯一 ID。如 default_factory对于该领域:

from dataclasses import dataclass, field
from itertools import count

@dataclass(frozen=True)
class myDataClass:
    x: float
    y: float
    id: int = field(default_factory=count().__next__, init=False)
它比其他选项更快,不涉及自定义代码,并且至少在 CPython 引用解释器上是线程安全的(itertools.count 在 C 中实现并且不释放 GIL,因此两个实例不可能获得相同的结果id)。

关于Python:数据类的唯一整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66770132/

相关文章:

python - Tkinter 从 PopUp 中读取输入值

python - 如何使用 python 从 azure 获取特定资源组的成本详细信息?

Python gzip 在 Ubuntu 11.04 上失败

python - 数据类与 typing.NamedTuple 主要用例

python - 如何在 python 中进化数据类?

python - 计算列表列表中每个唯一项的出现次数

python - 为字典实现自定义键,以便同一类的 2 个实例匹配

python - 如何使未卡住的数据类实例可散列?

python - 嵌套数据类的 Json 序列化