Подкласс явного набора аргументов с использованием mypy - PullRequest
1 голос
/ 03 мая 2020

У меня есть следующее:

class Parent:
    def method(self, arg1: str, *args: Any, **kwargs: Any) -> None:
        print("Hello", arg1)

class Child(Parent):
    def method(self, arg1: str, arg2: int, *args: Any, **kwargs: Any) -> None:
        print("Hello", arg1, str(arg2))

Цель этого проекта - заставить все подклассы Parent иметь аргумент arg1, но иметь возможность добавить любой аргумент после этого. Эти следующие аргументы представлены как *args и **kwargs в Parent, а Child "требует" arg2.

Я знаю, что это плохо, так как Child.method должен быть в состоянии использоваться везде, где ожидается Parent.method, но дополнительный аргумент запрещает это. Тем не менее, есть ли более милое решение, чем замена *args и **kwargs каким-либо параметром options: Dict[str, Any] в Parent и Children?

Я слышал о принципе подстановки Лискова, но не знаю, как применить это в этом случае.

...