Python 为什么包装类不继承基本数据类型?
我正在查看Python 为什么包装类不继承基本数据类型?,python,design-patterns,Python,Design Patterns,我正在查看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.it
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的功能。,因为它们比从基本数据类型继承的功能更老。修改它们可能会以各种方式破坏现有的程序。因为它们比从基本数据类型继承的功能更旧。修改它们可能会以各种方式破坏现有程序。在Python2.2之前,您不能子类化dict
UserDict
仅为向后兼容而存在
请参见Python2.2之前的,您不能将
dict子类化UserDict
仅为向后兼容而存在
有关文档,请参见+1@Vaibhav Bajpai,我尝试遵循的一个一般原则是,在对某些事情感到恼火之前,阅读文档。+1表示文档@Vaibhav Bajpai,我尝试遵循的一个一般原则是,在对某事感到恼怒之前,阅读文档。