Vai*_*pai 1 python design-patterns
我正在看UserDict班级来源,我有点不安地看到:
class UserDict:
def __init__(self, dict=None, **kwargs):
self.data = {}
if dict is not None:
self.update(dict)
...
Run Code Online (Sandbox Code Playgroud)
然后方法如:
def keys(self): return self.data.keys()
def items(self): return self.data.items()
def iteritems(self): return self.data.iteritems()
def iterkeys(self): return self.data.iterkeys()
def itervalues(self): return self.data.itervalues()
def values(self): return self.data.values()
Run Code Online (Sandbox Code Playgroud)
这样做会不会更好:
class UserDict(dict):
def __init__(self, dict=None, **kwargs):
#self.data = {} # now self itself is {}
if dict is not None:
self.update(dict)
...
Run Code Online (Sandbox Code Playgroud)
然后对上述方法的需求就会消失.
此外,它还有助于程序员在一开始就学习UserDict通过查看类定义本身来扩展dict的功能.