擅长:python、mysql、java
<pre><code>import inspect
def callthing():
my_caller = inspect.stack()[1]
args, varargs, keywords, locals = inspect.getargvalues(my_caller)
print args[0]
</code></pre>
<p>当上面的<code>callthing</code>被调用时,它将获得其调用者的参数(<code>[1]</code>是“当前堆栈帧之上的堆栈帧”),打印第一个。您甚至可以使用命名参数来“获取名为<code>x_inst</code>的参数的值”。也许<code>@classmethod</code>应该返回一个包含在对<code>callthing</code>的调用中的函数?在</p>
<p>您还可以使用<code>inspect.getargspec(my_function)</code>在decorator本身中进行分支,请记住,给定参数的实际<em>值</em>此时不可用,因为函数是构造而不是调用的。在</p>