Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么包装类不继承基本数据类型?_Python_Design Patterns - Fatal编程技术网

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,我尝试遵循的一个一般原则是,在对某事感到恼怒之前,阅读文档。