【发布时间】:2013-08-26 16:04:20
【问题描述】:
我想创建一个可以扩展 dict 功能的类。到目前为止,这是我的代码:
class Masks(dict):
def __init__(self, positive=[], negative=[]):
self['positive'] = positive
self['negative'] = negative
我想在构造函数中有两个预定义的参数:正负掩码列表。当我执行以下代码时,我可以运行
m = Masks()
并创建了一个新的 mask-dictionary 对象 - 这很好。但我希望能够像使用 dicts 一样创建这个遮罩对象:
d = dict(one=1, two=2)
但是使用面具失败了:
>>> n = Masks(one=1, two=2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __init__() got an unexpected keyword argument 'two'
我应该在 Masks 的某个地方调用父构造函数 init。init 可能。我尝试使用**kwargs 并将它们传递给父构造函数,但仍然 - 出了点问题。有人可以指出我应该在这里添加什么吗?
【问题讨论】:
-
@IgnacioVazquez-Abrams 感谢此链接 - 它解释了默认参数绑定。但我也很感激有关如何处理我的 Masks.__init__ 的提示;)
-
嗯,这就是 kwargs 的用途。
标签: python dictionary inheritance monkeypatching