【发布时间】:2017-08-15 02:22:28
【问题描述】:
我在my_decorators.py 中有一个装饰器模块,它们正在创建类,我将这些装饰器导入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
有没有办法访问单独模块中装饰器内Example 类或Example.py 模块的本地或全局范围?
【问题讨论】:
-
为什么要访问该范围?如果您需要访问
to_belong_to_newly_created_class,那就是func。您已经可以访问它了。 - 编辑:等等,不,你定义的参数错误。但是,如果您正确定义了参数,您将可以访问它作为装饰器的参数。 -
我是否可以访问装饰器内部的
self(指Example的实例)?如果我这样做,我如何访问它? -
装饰器执行时没有
Example的实例。 -
这个装饰器实际上应该做什么?
CreatedClass的作用是什么?CreatedClass的定义应该在什么时候执行,CreatedClass定义后会发生什么?你的装饰器没有多大意义,你也没有对它应该做什么给出太多解释,所以很难说它应该是什么样子。 -
to_belong_to_newly_created_class方法应该是Example的方法、CreatedClass的方法还是其他什么?CreatedClass是否应该可以通过Example的属性访问?还是to_belong_to_newly_created_class应该是创建CreatedClass实例的方法?目前还不清楚这一切的预期结果是什么。
标签: python scope python-decorators