我今天看着Django源代码,我注意到了这一点:
class DjangoTestSuiteRunner(object):
def __init__(self, verbosity=1, interactive=True, failfast=True, **kwargs):
self.verbosity = verbosity
self.interactive = interactive
self.failfast = failfast
为什么他们会在构造函数中接受kwargs但是却不对它们做任何事情?
答案 0 :(得分:9)
此模式可以使向后/向前兼容性更容易。 如果较新/较旧版本的代码具有更多/更少的参数,那么您将不会破坏所有内容。
此外,当您继承此类时(例如使用mixins),只需接受所有内容即可。
Imho它不是一个漂亮的模式,但它可以工作。