当前位置: 首页 > 面试题库 >

如何在被调用方法中获取调用者的方法名称?

齐典
2023-03-14
问题内容

Python:如何在被调用方法中获取调用者的方法名称?

假设我有2种方法:

def method1(self):
    ...
    a = A.method2()

def method2(self):
    ...

如果我不想对method1进行任何更改,如何在method2中获取调用者的名称(在本示例中,名称为method1)?


问题答案:

inspect.getframeinfo和其他相关功能inspect可以帮助:

>>> import inspect
>>> def f1(): f2()
... 
>>> def f2():
...   curframe = inspect.currentframe()
...   calframe = inspect.getouterframes(curframe, 2)
...   print('caller name:', calframe[1][3])
... 
>>> f1()
caller name: f1

该自省旨在帮助调试和开发;建议不要将其用于生产功能。



 类似资料:
  • 问题内容: Python:如何在被调用方法中获取调用者的方法名称? 假设我有2种方法: 如果我不想对method1进行任何更改,如何在method2中获取调用方的名称(在本示例中,名称为method1)? 问题答案: 和其他相关功能可以帮助: 该自省旨在帮助调试和开发;建议不要出于生产功能目的而依赖它。

  • 问题内容: 例如,方法调用方法。在方法中,如何获取文件名(我不想传递给方法)… 问题答案: 您可以使用该模块来实现此目的:

  • 问题内容: 我知道函数,但是我正在寻找一些易于使用的函数实现?如果它也提供了方法的类(如果确实是方法),那将是完美的。 问题答案: 该函数是了解这一点的唯一方法,如果您很懒,这是您自己编写代码的另一个原因。 对抗懒惰! :D

  • 问题内容: 像这样:类具有一个称为sayHello()的方法。当该类的实例调用sayHello()时,另一个类中的方法会在调用sayHello()之前自动调用。 示例代码可以像这样: 输出结果: 似乎可以通过使用代理模式来完成。但我希望它可以更简单。 使用注释: 然后将MethodListener注释放在Person类中的方法sayHello()上, 调用具有MethodListener批注的方法

  • 问题内容: 我想得到调用方法。 不是 方法的名称。 这是一个如何获取调用方类的示例。 仅用于测试目的! 问题答案: 如果仅用于测试,则可能有效。它假定可以通过调用类的类访问类文件,并且类文件已使用调试符号进行编译(我希望它们用于测试!)。此代码依赖于ASM字节码库。

  • 本文向大家介绍ASP.NET中实现获取调用方法名,包括了ASP.NET中实现获取调用方法名的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ASP.NET中实现获取调用方法名的技巧。分享给大家供大家参考。具体实现方法如下: 在写记录日志功能时,需要记录日志调用方所在的模块名、命名空间名、类名以及方法名,想到使用的是反射(涉及到反射请注意性能),但具体是哪一块儿还不了解,于是搜索,整理如下: