Переопределение метода Python: как использовать kwargs в родительской подписи? - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть родительский класс с функцией-заглушкой, которая должна быть перезаписана дочерними классами.Хитрость заключается в том, что дочерние классы передают переменные аргументы ключевых слов в функцию:

class Parent: 
    def __init__(self, arg):
        kwargs = get_kwargs()
        result = self.method_to_overwrite(arg, **kwargs)
        # do some stuff with result

    def method_to_overwrite(self, arg, **kwargs):
        raise NotImplementedError

class Child1(Parent):
    def method_to_overwrite(self, arg, arg1):
        # do stuff
        return something

class Child2(Parent):
    def method_to_overwrite(self, arg, arg2):
        # do different stuff
        return something_else

Когда я это делаю, я получаю предупреждение, что методы method_to_overwrite не соответствуют родительской подписи.Согласно этому предупреждение о задержке не является серьезной проблемой.Тем не менее, я бы не хотел этого предупреждения.

Кроме того, я бы хотел избегать делать что-то вроде kwargs.get('arg1') каждый раз, когда я хочу получить доступ к аргументам, таким как arg1 и arg2.Гораздо чище просто ссылаться на них напрямую.

Есть ли лучший способ сделать это?

...