- 论坛徽章:
- 0
|
回复 2# cdtits
你的意思是不是这样:- from UserDict import UserDict
- class myUserDict(UserDict):
- def __init__(self,dict=None,lock=False,**kwarg):
- self.lock = lock
- UserDict.__init__(self,dict,**kwarg)
- def lockit(self):
- self.lock = True
- def unlockit(self):
- self.lock =False
- def __setitem__(self,key,item):
- if self.lock:
- raise ValueError("The Dict is locked")
- else:
- return UserDict.__setitem__(self,key,item)
- def __delitem__(self,key):
- if self.lock:
- raise ValueError("The Dict is locked")
- else:
- return UserDict.__delitem__(self,key)
- def update(self,dict=None,**kwarg):
- if self.lock:
- raise ValueError("The Dict is locked")
- else:
- return UserDict.update(self,dict,**kwarg)
- def setdefault(self,key,failobj=None):
- if self.lock:
- raise ValueError("The Dict is locked")
- else:
- return UserDict.setdefault(self,key,failobj)
- def pop(self,key,*args):
- if self.lock:
- raise ValueError("The Dict is locked")
- else:
- return UserDict.pop(self,key,*args)
- def popitem(self):
- if self.lock:
- raise ValueError("The Dict is locked")
- else:
- return UserDict.popitem(self)
复制代码 结果:
>>> from myUserDict import myUserDict
>>> a=myUserDict({1:1,2:2,3:3})
>>> a
{1: 1, 2: 2, 3: 3}
>>> a[4]=4
>>> a
{1: 1, 2: 2, 3: 3, 4: 4}
>>> a.lockit()
>>> a[5]=5
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "myUserDict.py", line 13, in __setitem__
raise ValueError("The Dict is locked")
ValueError: The Dict is locked
>>> |
|