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 用户定义的可调用类型的主要内容,如果未能解决你的问题,请参考以下文章

VSCode创建自定义用户片段

MYSQL可调用执行自定义SQL的代码

将vscode打造成无敌的IDE添加自定义的snippet

将vscode打造成无敌的IDE添加自定义的snippet

查明 C++ 对象是不是可调用

张量类型的变量初始化器必须包装在 init_scope 或可调用的