我正在查看 UserDict 类源代码,我有点不安地看到:
class UserDict:
def __init__(self, dict=None, **kwargs):
self.data = {}
if dict is not None:
self.update(dict)
...
然后是像这样的方法:
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()
这样做不是更好吗:
class UserDict(dict):
def __init__(self, dict=None, **kwargs):
#self.data = {} # now self itself is {}
if dict is not None:
self.update(dict)
...
然后对上述方法的需求就会消失。
此外,它还可以帮助程序员从一开始就了解 UserDict 通过查看类定义本身来扩展 dict 的功能。
请您参考如下方法:
因为它们比从基本数据类型继承的能力更老。为此修改它们可能会以各种方式破坏现有程序。
