python魔方方法__call__
一、简介
当一个类,实现了__call__
方法,那么这个类的实例对象,便可以像调用函数一样来,利用调用运算符()
进行调用,执行__call__
方法中重写的内置逻辑。
二、详解
语法:
def __call__(self, *args):
...
return something
三、代码
import random
class BingoCage(object):
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 form empty BingoCage!')
def __call__(self):
return self.pick()
bingo = BingoCage((1,2,3,4,5,6))
print(bingo.items)
print(bingo.pick())
bingo()
[2, 3, 1, 4, 5, 6]
6
5
我们定义了一个宾果类,并且定义了一个pick方法弹出这个类的最后一个元素,然后我们定义了__call__方法,使得可以直接用调用运算符来调用这个类的实例对象。