Python一個很方便的功能是函數可以當作參數傳遞
那請問我可以在class裡面取得調用的函數物件嗎
例如我想做到在函數被調用前
可以做其他處理
拿print來舉例好了
像是下面程式碼這樣
class Logger(object):
def int(self, value):
print('Call int()')
return int(value)
def float(self, value):
print('Call float()')
return float(value)
logger = Logger()
logger.int('123')
logger.float('123')
我只知道可以用下面的方法取得函數的名稱
class Logger(object):
def __getattr__(self, name):
print('Call %s()' % name)
但是函數物件要怎麼抓?
像是如果我有20個函數的話
那class裡面就要寫20遍
如果之後又需要擴充到40個函數
那就還要在class裡面加40個
有沒有什麼方法是可以把logger.func()裡的func()直接抓來用的
例如什麼
class Logger(object):
def __getfunc__(self, func, arg):
# do something
return func(arg)
之類的
這樣我只要定義一個函數
後面不過擴充幾個需要做一樣處理的函數
我都不需要再增加class裡面的函數數量
感謝