[英]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.