5.5 用户定义的可调用类型
Posted wjw2018
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5.5 用户定义的可调用类型相关的知识,希望对你有一定的参考价值。
不仅 Python 函数是真正的对象,任何 Python 对象都可以表现得像函数。为此,只需实现实例方法 __call__。
import random class BingoCage: def __init__(self, items): self._items = list(items) ? random.shuffle(self._items) ? def pick(self): ? try: return self._items.pop() except IndexError: raise LookupError(‘pick from empty BingoCage‘) ? def __call__(self): ? return self.pick()
? __init__ 接受任何可迭代对象;在本地构建一个副本,防止列表参数的意外副作用。
? shuffle 定能完成工作,因为 self._items 是列表。
? 起主要作用的方法。
? 如果 self._items 为空,抛出异常,并设定错误消息。
? bingo.pick() 的快捷方式是 bingo()。
输出示例:
>>> bingo = BingoCage(range(3)) >>> bingo.pick() 1 >>> bingo() 0 >>> callable(bingo) True
以上是关于5.5 用户定义的可调用类型的主要内容,如果未能解决你的问题,请参考以下文章