擅长:python、mysql、java
<p>好吧,在经过一番调查之后,我得到了如下结论:</p>
<pre><code>stack = inspect.stack()
the_class = stack[1][0].f_locals["self"].__class__
the_method = stack[1][0].f_code.co_name
print("I was called by {}.{}()".format(str(calling_class), calling_code_name))
# => I was called by A.a()
</code></pre>
<p>调用时:</p>
<pre><code>➤ python test.py
A.a()
B.b()
I was called by __main__.A.a()
</code></pre>
<p>给定文件<code>test.py</code>:</p>
<pre><code>import inspect
class A:
def a(self):
print("A.a()")
B().b()
class B:
def b(self):
print("B.b()")
stack = inspect.stack()
the_class = stack[1][0].f_locals["self"].__class__
the_method = stack[1][0].f_code.co_name
print(" I was called by {}.{}()".format(str(the_class), the_method))
A().a()
</code></pre>
<p>不确定当从对象以外的对象调用时它将如何工作。</p>