Python - 内置类的装饰器'方法?

时间:2017-06-23 14:50:03

标签: python

我知道我可以在函数定义期间在自定义函数上应用装饰器,如此

@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

2 个答案:

答案 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))