我想做这样的事情:
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)
基本上,每个子类都需要正确实例化某些参数。它们是相同的参数。我只想一次检查这些参数。如果我可以从父 init ()完成此操作 - 那就更好了。
是否可以这样做?
答案 0 :(得分:6)
不确定。这不是一种罕见的模式:
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)
这也使您与super
shenanigans保持隔离:现在A
的argspec可以更改而无需对B
进行任何修改,并且钻石继承的可能性稍微不大。< / p>
答案 1 :(得分:2)
绝对。参数和关键字扩展在输入参数和关键字参数时会自然地起作用。