Передача аргументов с использованием kwargs Python, но с поддержкой проверки типов - PullRequest
1 голос
/ 20 апреля 2020

У меня есть общий шаблон в 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)
...