Python “自我”是什么意思

Python “自我”是什么意思,python,pinax,Python,Pinax,在pinax Userdict.py中: def __getitem__(self, key): if key in self.data: return self.data[key] if hasattr(self.__class__, "__missing__"): return self.__class__.__missing__(self, key) 为什么它会在自己身上这样做 感谢展示的UserDict.p

在pinax Userdict.py中:

def __getitem__(self, key):
        if key in self.data:
            return self.data[key]
        if hasattr(self.__class__, "__missing__"):
            return self.__class__.__missing__(self, key)
为什么它会在自己身上这样做

感谢

展示的UserDict.py与内置dict非常接近,例如:

>>> class m(dict):
...   def __missing__(self, key): return key + key
... 
>>> a=m()
>>> a['ciao']
'ciaociao'
正如在对内置dict进行子类化时,可以重写特殊方法来处理缺少的键一样,在对该UserDict进行子类化时,也可以重写它

dict的官方Python文档是,它们确实说:

版本2.5中新增:如果 dict定义了一个方法uuu缺失uuuu, 如果钥匙不存在,则 d[key]操作调用该方法 以键作为参数。这个 d[键]操作然后返回或 引发返回或引发的任何内容 如果 钥匙不存在。没有别的 操作或方法调用 __失踪。如果未定义uuu missing uuuu,则会引发KeyError。 __缺少_uu必须是一个方法;它不能是实例变量。为了 示例,请参见collections.defaultdict

提供的UserDict.py与内置dict非常相似,例如:

>>> class m(dict):
...   def __missing__(self, key): return key + key
... 
>>> a=m()
>>> a['ciao']
'ciaociao'
正如在对内置dict进行子类化时,可以重写特殊方法来处理缺少的键一样,在对该UserDict进行子类化时,也可以重写它

dict的官方Python文档是,它们确实说:

版本2.5中新增:如果 dict定义了一个方法uuu缺失uuuu, 如果钥匙不存在,则 d[key]操作调用该方法 以键作为参数。这个 d[键]操作然后返回或 引发返回或引发的任何内容 如果 钥匙不存在。没有别的 操作或方法调用 __失踪。如果未定义uuu missing uuuu,则会引发KeyError。 __缺少_uu必须是一个方法;它不能是实例变量。为了 示例,请参见collections.defaultdict

如果要在dict aka _________中使用默认值,可以从“集合”模块中签出:

from collections import defaultdict

a = defaultdict(int)

a[1] # -> 0
a[2] += 1
a # -> defaultdict(int, {1: 0, 2: 1})
如果要在dict aka _________中使用默认值,可以从“集合”模块中签出:

from collections import defaultdict

a = defaultdict(int)

a[1] # -> 0
a[2] += 1
a # -> defaultdict(int, {1: 0, 2: 1})