gpt4 book ai didi

python - 如何使用数据类生成字段值?

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:28 24 4
gpt4 key购买 nike

我有以下类(class):

class WordItem:
def __init__(self, phrase: str, word_type: WORD_TYPE):
self.id = f'{phrase}_{word_type.name.lower()}'
self.phrase = phrase
self.word_type = word_type

@classmethod
def from_payload(cls, payload: Dict[str, Any]) -> 'WordItem':
return cls(**payload)

如何将此类重写为 dataclass

具体来说,id字段应该如何声明?它具有生成的值,而不是代码创建实例将提供的字段。

最佳答案

只需将您的每个属性移动到类的类型注释声明中,该类已用 @dataclasses.dataclass decorator 修饰。 .

您可以在 __post_init__ method 中为 id 生成值;确保将其标记为免于使用 dataclass.field() object__init__ 参数:

from dataclasses import dataclass, field    

@dataclass
class WordItem:
id: str = field(init=False)
phrase: str
word_type: WORD_TYPE

def __post_init__(self):
self.id = f'{self.phrase}_{self.word_type.name.lower()}'

演示:

>>> from types import SimpleNamespace
>>> wt = SimpleNamespace(name='Python')
>>> WordItem('await', wt)
WordItem(id='await_python', phrase='await', word_type=namespace(name='Python'))

关于python - 如何使用数据类生成字段值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52627942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com