繁体   English   中英

python 数据类上的不可变字段

[英]Unmutable field on python's dataclass

我有这个数据类:

@dataclass
class Couso:
    nome: str
    date: str = field(default=datetime.now(), init = False)
    id_: str = field(default=key())

作为 key() 一个简单的 function,它在 len 32 上返回一个 str。

当我创建它的多个类时(显然没有指定 id_)它们都共享相同的 id_

但为什么会这样呢? 我无法理解。

另外,这种情况会再次发生在属性日期上吗?

key在调用field之前调用以创建字段,因此每个实例都将具有相同的默认id_属性。 就像你写的一样

x = key()


@dataclass
class Couso:
    ...
    id_ : str = field(default=x)

如果您想在每次创建新实例时都调用key ,请改用default_factory

id_: str = field(default_factory=key)  # key is not called; it's passed as an object.

datetime.now也是如此:

date: str = field(default_factory=datetime.now, init = False)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM