我知道我可以在函数定义期间在自定义函数上应用装饰器,如此
@mydecorator
def foo():
...
现在我想在下面的__call__
方法中应用自制装饰器。
from scipy.interpolate import RectBivariateSpline
spline_obj = RectBivariateSpline(x, y, z)
interp_val = spline_obj.__call__(query_x, query_y, grid=False)
这个功能不是我定义的。我应该在哪里放置@mydecorator
?
答案 0 :(得分:1)
@decorator
def foo():
...
只是一种定义
的奇特方式foo = decorator(foo)
因此,您可以从内置方法创建一个修饰函数,然后将其传递给self
。
答案 1 :(得分:0)
我认为你真的不需要这个,你可以定义一个带3个变量的函数,并做你想要的(包装它)。如果坚持使用我不推荐的装饰器进行操作,则必须创建自己的类并重写方法(__call__
) - 这是一种模糊形式的包装器。底线,只需定义:
def decorated_spline(spline_object, query_x, query_y, grid=False):
print("Do whatever.... with",spline_object(query_x,query_y,grid=grid))