我是靠谱客的博主 落寞口红,这篇文章主要介绍Python __missing__,现在分享给大家,希望可以做个参考。

According to the python documentation:


If a subclass of dict defines a method __missing__(), if the key key is not present, the d[key] operation calls that method with the key key as argument. The d[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, see collections.defaultdict.


This is, at least, incomplete, since __missing__ must not only return the default value, but also assign it internally. This is made clear in the documentation for collections.defaultdict:


If default_factory is not None, it is called without arguments to provide a default value for the given key, this value is inserted in the dictionary for the key, and returned.

Surprisingly, the __missing__ method is not mentioned in the special method names section of the python documentation.

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class memoize(dict): def __init__(self, func): self.func = func def __call__(self, *args): print "__call__" return self[args] def __missing__(self, key): print "__missing__" result = self[key] = self.func(*key) return result @memoize def foo(a, b): return a * b print foo(1,2) print foo(1,2) print foo(1,2) print foo(1,2) print foo(1,2) print foo(1,2)

执行结果:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
__call__ __missing__ 2 __call__ 2 __call__ 2 __call__ 2 __call__ 2 __call__ 2



最后

以上就是落寞口红最近收集整理的关于Python __missing__的全部内容,更多相关Python内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部