我正在查看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的功能。
答案 0 :(得分:5)
因为它们比从基本数据类型继承的能力更旧。修改它们可能会以各种方式破坏现有程序。
答案 1 :(得分:4)
在Python 2.2之前,你无法继承dict
。 UserDict
仅用于向后兼容。