Python 创建 class 类时,如果定义了 call() 方法,则,实例化该 class 类时,实例名() 即为调用 call() 的方法.
call() 实现了将 class 类实例转变成可调用对象.
Demo1:
class Demo_Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
def __call__(self, words):
print "My name is %s..." % self.name
print "Hello: ", words
if __name__ == "__main__":
demo_person = Demo_Person("HGF", "male")
demo_person("Welcome to aiuai.cn!")
输出:
My name is HGF...
Hello: Welcome to aiuai.cn!
Demo2: - 斐波那契数列
class Fib(object):
def __init__(self):
print "Fib Demo."
def __call__(self,num):
a,b = 0,1;
self.l = []
for i in range (num):
self.l.append(a)
a,b= b,a+b
return self.l
if __name__ == "__main__":
fib = Fib()
print fib(10)
输出:
Fib Demo.
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]