簡體   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