python如何获取函数所在的类名

python如何获取函数所在的类名

作者:Elara发布时间:2026-01-14阅读时长:0 分钟阅读次数:6

用户关注问题

Q
如何在Python中确定当前函数属于哪个类?

在编写Python代码时,我想知道某个函数属于哪个类,有什么方法可以实现?

A

使用self和__class__属性获取类名

在类的实例方法中,可以通过self.class.__name__来获取当前实例所属的类名。如果你在类的实例方法中调用这个属性,就可以获取到该函数所在的类名。示例如下:

class MyClass:
    def my_method(self):
        print(self.__class__.__name__)

obj = MyClass()
obj.my_method()  # 输出: MyClass
Q
有没有办法在Python中从函数对象获取所属类?

我有一个函数对象,想要找到它所属的类,Python提供的机制有哪些?

A

利用inspect模块和类成员检查函数归属

可以使用Python的inspect模块结合类的成员扫描来确定函数所属的类。具体思路是遍历可能的类集合,检查该函数是否是它的成员。例如:

import inspect

def get_class_that_defined_method(meth):
    if inspect.ismethod(meth) or inspect.isfunction(meth):
        for cls in inspect.getmro(meth.__qualname__.split('.')[0]):
            if meth.__name__ in cls.__dict__:
                return cls.__name__
    return None

不过这种方法需要对具体应用环境做调整。

Q
如何在Python调试时查看当前执行的函数属于哪个类?

在调试Python代码时,有什么快捷方法查看正在执行的函数是哪个类的方法?

A

通过调试器的上下文和对象信息获取类名

在使用调试器(如pdb)时,可以打印self对象,然后查看它的类型来得到类名。比如在断点处执行命令:

(pdb) p type(self).__name__

这会直接给出当前函数的类名。前提是函数是类的实例方法并且包含self参数。