Зачем принимать кварги, но не использовать их?

Я смотрел на исходный код Django сегодня и заметил это:

class DjangoTestSuiteRunner(object):
    def __init__(self, verbosity=1, interactive=True, failfast=True, **kwargs):
        self.verbosity = verbosity
        self.interactive = interactive
        self.failfast = failfast

Почему они принимают в конструктор kwargs, но не делают с ними ничего?

1 ответ

Решение

Этот шаблон может облегчить обратную / прямую совместимость. Если более новая / более старая версия кода имеет больше / меньше параметров, тогда вы не сломаете все.

Кроме того, когда вы наследуете этот класс (например, с помощью mixins), может быть удобно просто принять все.

Imho, это не симпатичный шаблон для использования, но он работает.

Другие вопросы по тегам