- 论坛徽章:
- 0
|
回复 14# 106033177
回复 11# cdtits
回复 1# zhuyubei
刚学了函数修饰符的的使用,试着改写了先前写的程序,是精简了一些,但是面向对象不太好,多了个全局函数,让高手看看,有什么建议。- from UserDict import UserDict
- def public_lock(func):
- def newfunc(self,*argv,**kwarg):
- if self.lock:
- raise ValueError("The Dict is locked")
- else:
- return func(self,*argv,**kwarg)
- return newfunc
- 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
- @public_lock
- def __setitem__(self,key,item):
- return UserDict.__setitem__(self,key,item)
- @public_lock
- def __delitem__(self,key):
- return UserDict.__delitem__(self,key)
- @public_lock
- def update(self,dict=None,**kwarg):
- return UserDict.update(self,dict,**kwarg)
- @public_lock
- def setdefault(self,key,failobj=None):
- return UserDict.setdefault(self,key,failobj)
- @public_lock
- def pop(self,key,*args):
- return UserDict.pop(self,key,*args)
- @public_lock
- def popitem(self):
- return UserDict.popitem(self)
- if __name__ == '__main__':
- a=myUserDict({1:1,2:2,3:3})
- print a
- a.lockit()
- a[4] = 5
复制代码 |
|