在Python中,可以使用内置的inspect
模块来获取当前执行的模块或类名。具体操作如下:
inspect
模块:import inspect
inspect.currentframe()
获取当前执行的栈帧,然后使用inspect.getmodule(frame)
获取当前执行的模块对象:frame = inspect.currentframe()
module = inspect.getmodule(frame)
inspect.getmodule(frame).__name__
获取当前执行的模块名:module_name = inspect.getmodule(frame).__name__
inspect.getouterframes(frame)
获取当前执行的函数或方法所在的类对象:outer_frames = inspect.getouterframes(frame)
class_name = outer_frames[1][3]
完整代码示例:
import inspect
def get_module_and_class_name():
frame = inspect.currentframe()
module = inspect.getmodule(frame)
module_name = module.__name__
outer_frames = inspect.getouterframes(frame)
class_name = outer_frames[1][3]
return module_name, class_name
class Test:
def test_method(self):
module_name, class_name = get_module_and_class_name()
print(f"Module name: {module_name}")
print(f"Class name: {class_name}")
if __name__ == '__main__':
t = Test()
t.test_method()
输出结果:
Module name: __main__
Class name: Test
注意:以上代码仅适用于获取当前执行的模块或类名,如果需要在其他场景下获取模块或类名,可能需要使用其他方法。
领取专属 10元无门槛券
手把手带您无忧上云