程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python中的特殊方法__call__

編輯:Python

__call__是Python 類中一個非常特殊的實例方法,使得類實例對象可以像調用普通函數那樣,以 "對象名()" 的形式進行使用。 Python中那些能夠在後面加()來調用執行的對象,被稱為可調用對象。如果類中定義了__call__()方法,那麼該類的實例對象也將成為可調用對象。該對象被調用時,將執行__call__()方法中的代碼。

class Entity:
def __init__(self, x, y):
self.x = x
self.y = y
print("初始化x:{0},y:{1}".format(x, y))
def __call__(self, x, y):
self.x, self.y = x, y
print("修改後x:{0},y:{1}".format(x, y))
e = Entity(1, 2) # 創建實例
e(4, 5) # 實例可以像函數那樣執行,並傳入x y值,修改對象的x y

 執行上述代碼,其輸出結果為:

初始化x:1,y:2
修改後x:4,y:5

實例對象也可以像函數一樣作為可調用對象來用,那麼,這個特點在什麼場景用得上呢?

這個要結合類的特性來說,類可以記錄數據(屬性),利用這種特性可以實現基於類的裝飾器,在類裡面記錄狀態,比如下面這個例子中用於記錄函數被調用的次數:


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved