小编Che*_*hen的帖子

在 Python 数据类中使用默认 uuid 值

如果我执行以下命令:

@dataclass
class Test:
    hi: Optional[str] = field(
        default_factory=lambda: str(uuid.uuid1()))

@dataclass
class Test2:
    hi: Optional[str] = str(uuid.uuid1())

if __name__ == "__main__":
    a = Test() # Test(hi='115a865c-33be-11eb-94a1-34c93db23648')
    b = Test() # Test(hi='115a865d-33be-11eb-8c6f-34c93db23648')
    c = Test2() # Test2(hi='10e44300-33be-11eb-85eb-34c93db23648')
    d = Test2() # Test2(hi='10e44300-33be-11eb-85eb-34c93db23648')
Run Code Online (Sandbox Code Playgroud)

为什么Test会为每个实例返回不同的 uuid,而Test2每次都会返回相同的 uuid?

另外,为什么default factory需要而不需要default

python python-dataclasses

2
推荐指数
1
解决办法
3980
查看次数

标签 统计

python ×1

python-dataclasses ×1