天天看點

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__()起的作用了。

至于為什麼要這樣做,待我慢慢發現吧。

 

轉載于:https://www.cnblogs.com/puyangsky/p/4802434.html