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() 一个简单的函数,returns len 32 上的一个 str。
当我创建多个 类 时(显然没有指定 id_)它们都共享相同的 id_
但为什么会这样呢?看不懂。
此外,属性 date 会再次发生这种情况吗?
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)
我有这个数据类:
@dataclass
class Couso:
nome: str
date: str = field(default=datetime.now(), init = False)
id_: str = field(default=key())
作为 key() 一个简单的函数,returns len 32 上的一个 str。
当我创建多个 类 时(显然没有指定 id_)它们都共享相同的 id_
但为什么会这样呢?看不懂。
此外,属性 date 会再次发生这种情况吗?
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)