gpt4 book ai didi

python - 在数据类中解压 kwargs

转载 作者:行者123 更新时间:2023-12-02 16:26:44 25 4
gpt4 key购买 nike

在创建数据类对象时我可以使用 kwargs 没有问题:

@dataclass()
class Data:
name: str = 'Unnamed'
additional: int = None
things: int = None

dic = {'additional': 123, 'things': 456}
res = Data(name='Somename', **dic)

Output: Data(name='Somename', additional=123, things=456)

但是,当它们不是调用参数的一部分时,我想在数据类中解压 kwargs:

@dataclass()
class Data:
name: str = 'Unnamed'
additional: int = None
things: int = None

def __post_init__(self):
self(**dic) #unpack kwargs to fields

dic = {'additional': 123, 'things': 456}
res = Data(name='Somename')

最佳答案

一个数据类可以显式定义一个__init__()方法。

documentation状态:

The parameters to dataclass() are:

init: If true (the default), a __init__() method will be generated.

If the class already defines __init__(), this parameter is ignored.

因此,您可以定义一个标准的__init__()方法来处理kwargs

@dataclass()
class Data:
name: str
additional: int
things: int

def __init__(self, name: str = 'Unnamed', additional: int = None, things: int = None, **kwargs):
for key, value in kwargs.items():
setattr(self, key, value)

关于python - 在数据类中解压 kwargs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64295239/

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