我被哪个方法,哪个类 调用了
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()