Rin*_*nce 2 python dictionary locking
美好的一天蟒蛇,
我想制作一个包含两个主要功能的自定义词典:
现在代码是这样的:
class pick(dict):
"""This will make delicious toffee when finished"""
def __init__(self, *args):
dict.__init__(self)
for arg in args:
self[arg] = None
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢.
UPD:
虽然我正在寻找解决方案,但有一个问题:
字典调用在__setitem__初始化时添加项目而不是找到引发错误的键.
cupboard = pick('milk') #raises error
Run Code Online (Sandbox Code Playgroud)
upd1:
一切都解决了,非常感谢你.
Ant*_*sma 12
__setitem__使用所需的行为覆盖方法,调用dict.__setitem__(self, key, value)修改基本字典而不通过基本逻辑.
class ImmutableDict(dict):
def __setitem__(self, key, value):
if key not in self:
raise KeyError("Immutable dict")
dict.__setitem__(self, key, value)
d = ImmutableDict(foo=1, bar=2)
d['foo'] = 3
print(d)
d['baz'] = 4 # Raises error
Run Code Online (Sandbox Code Playgroud)
您还需要覆盖dict.update()并setdefault()避免添加键.和可能dict.__delitem__(),dict.clear(),dict.pop()并dict.popitem()避免去除键.