生活不易 我用pythonPython语言与信息数据获取和机器学习

Python中的可调用对象

2017-05-16  本文已影响263人  SHISHENGJIA

在Python中,除了用户定义的函数,调用运算符(即 ())还可以应用到其他对象上。如果想判断对象能否调用,可以使用内置的 callable() 函数。Python 数据模型文档列出了以下 7 种可调用对象。

下面看一下把类的实例变成可调用的对象,只需实现实例方法 __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()

bingo = BingoCage(range(3))
print(bingo())
print(callable(bingo))  # True

实现 __call__ 方法的类是创建函数类对象的简便方式,此时必须在内部维护一个状态,让它在调用之间可用,例如 BingoCage 中的剩余元素。

上一篇 下一篇

猜你喜欢

热点阅读