是否有可能找出函数是否在运行时修饰?例如,我可以在模块中找到由"example"修饰的所有函数吗?
@example
def test1():
print "test1"
Run Code Online (Sandbox Code Playgroud)
在一般情况下,它是不可能的,因为example
装饰器可能不会留下任何在运行时可检测到的痕迹 - 例如,它可能是
def example(f):
return f
Run Code Online (Sandbox Code Playgroud)
如果您确实控制了源example
,那么它很容易标记或记录它正在装饰的功能; 如果你不这样做,完全不可能做你想做的事.
由于您已表明可以控制包装器代码,因此这是一个示例:
def example(f):
f.wrapped = True
return f
@example
def test1():
print "test1"
def test2():
print "test2"
print test1.wrapped
print hasattr(test2, 'wrapped')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7218 次 |
最近记录: |