目前我像这样使用 DTO(数据传输对象)。
class Test1:
def __init__(self,
user_id: int = None,
body: str = None):
self.user_id = user_id
self.body = body
示例代码很小,但是当对象规模变大时,我必须定义每个变量。
在深入研究时,发现支持python 3.7dataclass
下面的代码是 DTO 使用的数据类。
from dataclasses import dataclass
@dataclass
class Test2:
user_id: int
body: str
在这种情况下,我怎样才能允许传递更多未定义的参数class Test2
?
如果我用过Test1
,很容易。只需添加**kwargs(asterisk)
到__init__
class Test1:
def __init__(self,
user_id: int = None,
body: str = None,
**kwargs):
self.user_id = user_id
self.body = body
但是使用数据类,找不到任何方法来实现它。
这里有什么解决办法吗?
谢谢。
编辑
class Test1:
def __init__(self,
user_id: str = None,
body: str = None):
self.user_id = user_id
self.body = body
if __name__ == '__main__':
temp = {'user_id': 'hide', 'body': 'body test'}
t1 = Test1(**temp)
print(t1.__dict__)
结果 :{'user_id': 'hide', 'body': 'body test'}
如您所知,我想插入字典类型的数据->**temp
在数据类中使用星号的原因是相同的。
我必须将字典类型传递给类 init。
这里有什么想法吗?