我被哪个方法,哪个类 调用了
import inspect def func1(): caller = inspect.stack()[1].function ''' stack 堆栈;[0] 是自己所在的方法; [1]是被调用的方法 ''' print(f"func1方法被{caller}方法调用了") def func2(): func1() if __name__ == '__main__': func2()
import inspect class Animal: def func1(self): caller = inspect.stack()[1].function ''' stack 堆栈[0] 是自己; [1]是被调用的方法 ''' print(f"func1方法被{caller}方法调用了") class Tiger(): def func2(self): animal = Animal() animal.func1() if __name__ == '__main__': tiger = Tiger() tiger.func2()
import inspect class Animal: def func1(self): caller = inspect.stack()[1].function calling_class = inspect.stack()[1].frame.f_locals.get('self').__class__.__name__ ''' stack 堆栈[0] 是自己; [1]是被调用的方法 caller = inspect.stack()[1].function 获得被哪个方法调用 calling_class = inspect.stack()[1].frame.f_locals.get('self').__class__.__name__ 获得被哪个类调用 ''' print(f"func1方法被{calling_class}类调用了")# func1方法被Tiger类调用了 print(f"func1方法被{caller}类调用了")# func1方法被func2类调用了 class Tiger(): def func2(self): animal = Animal() animal.func1() if __name__ == '__main__': tiger = Tiger() tiger.func2()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?