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

このパターンにより、後方互換性と前方互換性が容易になります。コードの新しい/古いバージョンのパラメーターが多い/少ない場合、すべてが壊れることはありません。

また、このクラスを (たとえば mixin で) 継承する場合は、すべてをそのまま受け入れると便利な場合があります。

使用するのはきれいなパターンではありませんが、機能します。

于 2012-05-26T00:43:54.683 に答える