我可以将python**kwargs从sub传递给父类吗?

dor*_*emi 6 python kwargs

我想做这样的事情:

class A(object):
    def __init__(self, **kwargs):
       """ 
       return exception if certain arguments not set
       """

class B(A):
    def __init__(self, **kwargs):
       super(B, self).__init__(**kwargs)
Run Code Online (Sandbox Code Playgroud)

基本上,每个子类都需要正确实例化某些参数.它们是相同的参数.我只想一次检查这些参数.如果我可以从父init()做到这一点- 那就更好了.

是否有可能做到这一点?

Eev*_*vee 8

当然.这不是一种罕见的模式:

class A(object):
    def __init__(self, foo, bar=3):
        self.foo = foo
        self.bar = bar

class B(A):
    def __init__(self, quux=6, **kwargs):
        super(B, self).__init__(**kwargs)

        self.quux = quux

B(foo=1, quux=4)
Run Code Online (Sandbox Code Playgroud)

这也隔离您从一个小super把戏:现在A的argspec可以更改,不需要任何编辑B,和钻石继承是有点不太可能打破.