在类中使用装饰器并调用该对象

问题描述 投票:0回答:1

我有一个名为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

如何删除此错误?

python oop python-decorators
1个回答
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")
© www.soinside.com 2019 - 2024. All rights reserved.