在类内部使用装饰器并调用对象

时间:2018-09-04 07:02:05

标签: python oop python-decorators

我有一个带有decorator_func函数和另一个名为name_me函数的类。如何用类中的另一个函数来装饰name_me函数?

这是我到目前为止尝试过的:

class 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")

obj = Test()
obj.decorator_func()

The description of the code is mentioned in the image given below . Anaconda jyupiter lab is used to execute the code

如何清除此错误?

1 个答案:

答案 0 :(得分:2)

代码存在的问题是,您使用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")