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里面的函数数量
感谢