4

我今天在看 Django 源代码,我注意到了这一点:

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

为什么他们会在构造函数中接受 kwargs 而对它们不做任何事情?

4

1 回答 1

9

这种模式可以使向后/向前兼容更容易。如果新/旧版本的代码有更多/更少的参数,那么你不会破坏一切。

此外,当您继承此类时(例如使用 mixins),只接受所有内容会很方便。

恕我直言,这不是一个漂亮的模式,但它确实有效。

于 2012-05-26T00:43:54.683 回答