3
我想實現的字典,會做的是得到插入鑰匙某些檢查,例如請參見下文:的Python 2.6.5 defaultdict覆蓋__setitem__無限遞歸
from collections import defaultdict
class CheckingDict(defaultdict):
def __init__(self, *args, **kwargs):
super(CheckingDict, self).__init__(*args, **kwargs)
def __setitem__(self, key, value):
if not super(CheckingDict, self).__missing__(key):
raise ValueError("Key {key} is already present".format(key=key))
else:
return defaultdict.__setitem__(self, key, value)
a = CheckingDict(lambda: None)
a[1] = 1
上面代碼中的問題這是給我無限遞歸。所以問題是爲什麼以及如何正確地做到這一點?
我不想使用組合,因爲要獲得defaultdict
的所有功能,我需要編寫更多的代碼。