我想编写一个自定义类,其行为类似于dict
- 所以,我继承自dict
.
不过,我的问题是:我是否需要创建一个私有的dict
我的成员__init__()
方法?。我不明白这个有什么意义,因为我已经有了dict
如果我只是继承自的行为dict
.
谁能指出为什么大多数继承片段看起来像下面的那样?
class CustomDictOne(dict):
def __init__(self):
self._mydict = {}
# other methods follow
而不是更简单的...
class CustomDictTwo(dict):
def __init__(self):
# initialize my other stuff here ...
# other methods follow
实际上,我认为我怀疑问题的答案是用户无法直接访问您的字典(即他们必须使用您提供的访问方法)。
但是,数组访问运算符又如何呢?[]
?如何实现这一点?到目前为止,我还没有看到一个例子来说明如何覆盖[]
操作员。
So if a []
自定义类中没有提供access函数,继承的基方法会操作不同的字典吗?
我尝试了以下代码片段来测试我对 Python 继承的理解:
class myDict(dict):
def __init__(self):
self._dict = {}
def add(self, id, val):
self._dict[id] = val
md = myDict()
md.add('id', 123)
print md[id]
我收到以下错误:
KeyError:
上面的代码有什么问题?
我该如何批改班级myDict
这样我就可以编写这样的代码?
md = myDict()
md['id'] = 123
[Edit]
我编辑了上面的代码示例,以消除我在冲出办公桌之前犯的愚蠢错误。这是一个拼写错误(我应该从错误消息中发现它)。