Python __call__内置函数的作用和用法

Python __call__内置函数的作用和用法

  开学了进入了实验室,需要协助大师兄做事,主要是OpenStack中的代码解析,但是涉及很多python高级用法,一时间有点麻烦,在做项目的同时慢慢更新博客。这次先写一下__call__的用法,因为经常看到它却不知道到底是干嘛的。

  通过查阅资料发现__call__实际上是将一个类重载了"()",也就是让一个类也可以像一个函数一样可以拿来调用了,说了也许还是不清晰,直接上例子。

#/usr/bin/env python
class test:
    def __init__(self,a):
        self.a = a
    def __call__(self,b):
        c = self.a+b
        print c
    def display(self):
        print self.a

Test = test("This is test!")
Test.display()
Test("##Append something")

输出结果:This is test!

       This is test!##Append something

可以看出首先__init__函数类似于构造函数一样初始化了self中的值,将a赋值为“This is test!”,接着我们直接调用实例名,这里就是__call__()起的作用了。

至于为什么要这样做,待我慢慢发现吧。