Я пытаюсь переопределить метод инициализатора, но не копирую всю статическую типизацию из базового метода:
class BaseClass:
def __init__(self, *, message: str, error_code: int):
self.message = message
self.error_code = error_code
class SubClass(BaseClass):
def __init__(self, *, details: str, **kwargs):
super().__init__(**kwargs)
self.details = details
Мне бы очень хотелось, чтобы мне не приходилось копировать подпись BaseClass.__init__
вSubClass.__init__
чтобы получить статическую проверку параметров.Можно ли указать статической типизации / mypy, что SubClass.__init__(**kwargs)
являются параметрами / типами, объявленными в BaseClass.__init__
?
Мне не удалось найти синтаксис или модель «делегирования типизации», которая позволяла бы это послепрочитав как документацию python для ввода , так и чит-лист mypy
В идеале я хотел бы, чтобы код, подобный следующему, вызывал ошибку mypy /предупреждение:
SubClass(message="foo", error_code=13, details="badness", stack_trace=[1, 2, 3])
Подкласс не принимает аргумент с именем «stack_trace».