- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 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)
为什么它在 self.__class__.__missing__
上执行此操作。
谢谢
最佳答案
UserDict.py 呈现 here模拟内置 dict
紧密地,例如:
>>> class m(dict):
... def __missing__(self, key): return key + key
...
>>> a=m()
>>> a['ciao']
'ciaociao'
就像你可以覆盖特殊方法一样__missing__
在子类化内置 dict
时处理丢失的键,所以当你将 UserDict
子类化时你可以覆盖它吗? .
dict 的官方 Python 文档是 here ,他们确实说:
New in version 2.5: If a subclass of dict defines a method
__missing__
(), if the key key is not present, thed[key]
operation calls that method with the key key as argument. Thed[key]
operation then returns or raises whatever is returned or raised by the__missing__(key)
call if the key is not present. No other operations or methods invoke__missing__()
. If__missing__()
is not defined,KeyError
is raised.__missing__()
must be a method; it cannot be an instance variable. For an example, seecollections.defaultdict
.
关于python - 'self.__class__.__missing__'是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1990145/
我在学习str.format_map()时遇到了一个“类”的例子(Python String format_map()) class Coordinate(dict): def __missi
我想从 dict 派生并覆盖丢失的方法。我想做一些事情然后仍然调用它的 super 函数。像这样: class Foo(dict): def __missing__(self, key):
我写了一个非常简单的程序来对字典进行子类化。我想在 python 中尝试 __missing__ 方法。经过一些研究,我发现在 Python 2 中,它在 defaultdict 中可用。 (虽然在
我是一名优秀的程序员,十分优秀!