我想做这样的事情:
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()做到这一点- 那就更好了.
是否有可能做到这一点?
当然.这不是一种罕见的模式:
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,和钻石继承是有点不太可能打破.
| 归档时间: |
|
| 查看次数: |
4432 次 |
| 最近记录: |