Skip to main content
 首页 » 编程设计

python之为什么包装类不继承基本数据类型

2025年05月04日12webabcd

我正在查看 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 的功能。

请您参考如下方法:

因为它们比从基本数据类型继承的能力更老。为此修改它们可能会以各种方式破坏现有程序。