Python 为什么接受kwargs而不使用它们?

Python 为什么接受kwargs而不使用它们?,python,django,keyword-argument,Python,Django,Keyword Argument,我今天在看Django源代码时注意到: class DjangoTestSuiteRunner(object): def __init__(self, verbosity=1, interactive=True, failfast=True, **kwargs): self.verbosity = verbosity self.interactive = interactive self.failfast = failfast 为什么他们

我今天在看Django源代码时注意到:

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

为什么他们在构造函数中接受KWARG,但不使用它们呢?

这种模式可以使向后/向前兼容性更容易。 如果较新/较旧版本的代码具有更多/更少的参数,则不会破坏所有内容

此外,当您继承这个类(例如使用mixin)时,可以方便地接受所有内容


我知道这不是一个很好的模式,但它确实有效。

当多重继承树的一部分使用
super()
——如果树中的某个人想要接受关键字参数,那么每个人都必须能够在不引发异常的情况下接收它。