#__call__#
__call__可以实现调用
函数其实是一个对象:
>>> f = abs
>>> f.__name__
'abs'
>>> f(-123)
123
由于 f 可以被调用,所以,f 被称为可调用对象。
所有的函数都是可调用对象。
一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()。
我们把 Person 类变成一个可调用对象:
class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender def __call__(self, friend): print('My name is %s...' % self.name) print('My friend is %s...' % friend)
>>> p = Person('Bob', 'male') >>> p('Tim') My name is Bob... My friend is Tim...
# coding=utf-8 """用类实现斐波那契数列""" class Fib(): def __call__(self, *args, **kwargs): ret = [1,1] num = int(args[0]) if num == 1: return [1,] else: while len(ret)< num: ret.append(ret[-1]+ret[-2]) return ret fib = Fib() print(fib(5)) ==> [1, 1, 2, 3, 5]
print('{},{}'.format())

浙公网安备 33010602011771号