我在Python中有一个通用模式,该模式使用kwargs将对象的某些键传递给另一个函数,该函数采用带有一些添加/删除键的相似对象。一个例子是获取DTO,将其转换并将其写入数据库。
class FooUpdateDTO:
foo: str
class FooModel:
foo: str
bar: str
def foo(dto: FooUpdateDTO):
model: FooModel = FooModel(bar="bar", **dto.dict())
self.update(model)
def update(model: FooModel):
# do things
pass
现在,如果模型如下所示发生变化,我希望看到需要更新FooUpdateDTO
的类型错误。
class FooModel:
foo: int # <-- type changed
bar: str
但是我没有。
无需手动写出参数即可完成此工作的最佳方法是什么。
def foo(dto: FooUpdateDTO):
# model: FooModel = FooModel(bar="bar", **dto.dict()) # short and clean
model: FooModel = FooModel(bar="bar", foo=dto.foo) # long, verbose, and repetitive
self.update(model)