Проблема с вашим кодом в том, что вы декорируете функцию name_me
с помощью метода из класса Test
.
Вы можете переместить decorator_func
из класса Test
, тогда ваш код будет выглядеть так:
def decorator_func(fun):
def disp_fun(name):
return ("hello there, ") + fun(name)
return disp_fun
@decorator_func
def name_me(name):
return name
print name_me("abhi")
Мы создаем экземпляр класса Test
и украшаем функцию name_me
методом экземпляра, например так:
class Test :
def decorator_func(self, fun):
def disp_fun(name):
return ("hello there, ") + fun(name)
return disp_fun
# Create a instance of the Test class
obj = Test()
@obj.decorator_func
def name_me(name):
return name
print name_me("abhi")