首页 > 解决方案 > 使用 kwargs Python 传递参数但维护类型检查

问题描述

我在 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)

标签: pythonmypy

解决方案


推荐阅读