标签:rom oca class raise pytho pre python 函数 __call__
不仅 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
标签:rom oca class raise pytho pre python 函数 __call__
原文地址:https://www.cnblogs.com/wjw2018/p/10672361.html