You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取传入函数的方法所属的定义类名称?

获取传入函数的方法所属类名称

在Python中,针对method类型的对象,可以通过以下几种方式获取其所属的类名称:

方法1:利用__self__属性

method对象的__self__属性指向该方法绑定的实例(实例方法)或类本身(类方法):

  • 如果是实例方法,__self__是类的实例,通过type(__self__).__name__就能拿到类名称
  • 如果是类方法,__self__直接是类对象,直接取__self__.__name__即可

示例代码:

class DemoClass:
    def instance_method(self):
        pass

    @classmethod
    def class_method(cls):
        pass

def check_method_class(method):
    # 判断绑定的是实例还是类
    if isinstance(method.__self__, type):
        # 类方法的情况
        return method.__self__.__name__
    else:
        # 实例方法的情况
        return type(method.__self__).__name__

# 测试实例方法
demo_obj = DemoClass()
print(check_method_class(demo_obj.instance_method))  # 输出 DemoClass

# 测试类方法
print(check_method_class(DemoClass.class_method))  # 输出 DemoClass

方法2:利用__qualname__属性

__qualname__是方法的限定名称,格式为类名.方法名(如果是嵌套类则为外层类.内层类.方法名),可以通过字符串分割提取类名称:

def get_class_from_qualname(method):
    # 分割限定名称,取方法名之前的部分作为类的名称路径
    class_path = method.__qualname__.rsplit('.', 1)[0]
    return class_path

# 测试嵌套类场景
class OuterClass:
    class InnerClass:
        def nested_method(self):
            pass

inner_obj = OuterClass.InnerClass()
print(get_class_from_qualname(inner_obj.nested_method))  # 输出 OuterClass.InnerClass

这个方法更适合处理嵌套类的场景,能完整获取类的层次结构。

内容的提问来源于stack exchange,提问作者24n8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 12:18:17