从decorator访问调用decorator的模块的作用域

2024-10-03 13:20:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我在my_decorators.py中有一个decorator模块,它们正在创建类,我正在将这些decorator导入Example.py,以便在Example类的方法上使用:

my_decorators.py

def my_decorator():
    def inner_decorator(func):
        class CreatedClass(object):
            something = 'something'
        return CreatedClass
    return inner_decorator

Example.py

class Example(object):
    # I WANT TO ACCESS THIS SCOPE IN THE DECORATOR
    @my_decorator
    to_belong_to_newly_created_class(self):
        pass

有没有一种方法可以访问独立模块中decorator内部的Example类或Example.py模块的本地或全局范围


Tags: 模块to方法pydecoratorsreturnobjectexample
1条回答
网友
1楼 · 发布于 2024-10-03 13:20:03
def my_decorator(f):
    def inner_decorator(self, *args, **kwargs):
        print(self.TEST) # Access the required member from self.
        class CreatedClass(object):
            something = 'something'
        return CreatedClass
    return inner_decorator


class Example(object):
    TEST = 'TEST!!'
    # I WANT TO ACCESS THIS SCOPE IN THE DECORATOR
    @my_decorator
    def to_belong_to_newly_created_class(self):
        pass


if __name__ == '__main__':
    ex = Example()
    print(ex.to_belong_to_newly_created_class())

输出:

TEST!!
<class '__main__.my_decorator.<locals>.inner_decorator.<locals>.CreatedClass'>

相关问题 更多 >