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