【发布时间】:2014-01-26 23:12:18
【问题描述】:
有没有办法查看 Python 装饰器的应用程序对我应用了它的函数做了什么。例如,如果我有
class A(object):
@property
def something(self):
return 0
我想看看为something 执行的代码实际上是什么样的。有没有办法做到这一点?
【问题讨论】:
-
您想知道
something()的作用吗?它会抛出异常,因为缺少self。或者你想知道property做什么?文档解释了这一点;property对象本身是用 C 编码的。 -
修复了缺少的
self(这只是一个示例)。我想知道是否有一种通用的方法可以查看装饰器生成的 Python(如果有的话)。 -
装饰器永远不会生成 python 代码。它执行代码;
property对象是可调用的。@property只是something = property(something)的语法糖。 -
@MartijnPieters:那我真的不懂this;尤其是第 9 项中的示例。
-
outer(foo)返回inner函数,在该示例中存储在decorated中。因此,调用decorated()意味着您正在调用nested()函数。
标签: python decorator python-decorators code-inspection