![](/img/trans.png)
[英]How to declare python dataclass member field same as the dataclass type
[英]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.