開學了進入了實驗室,需要協助大師兄做事,主要是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__()起的作用了。
至於為什么要這樣做,待我慢慢發現吧。
