Python:如何从函数中获取实例所属的类名?
解决方法
__qualname__ 属性是方法定义时的限定名称,它绑定在方法对象本身,和调用该方法的实例所属类无关。要获取实例化类对应的方法限定名,需要结合实例的类信息与方法名来构造。
直接构造结果
通过实例的 type() 获取所属类名,再拼接方法的 __name__ 即可得到目标结果:
class A: def f(self): return 'I am f()' class B(A): def g(self): return 'I am g()' a = A() b = B() # 构造期望的限定名 print(f"{type(a).__name__}.{a.f.__name__}") print(f"{type(b).__name__}.{b.f.__name__}") print(f"{type(b).__name__}.{b.g.__name__}")
输出结果:
A.f B.f B.g
封装成通用函数
如果需要多次使用这类逻辑,可以封装成函数处理绑定方法:
def get_instance_method_qualname(bound_method): # 获取方法绑定的实例 instance = bound_method.__self__ # 拼接实例类名与方法名 return f"{type(instance).__name__}.{bound_method.__name__}" # 调用示例 print(get_instance_method_qualname(a.f)) print(get_instance_method_qualname(b.f)) print(get_instance_method_qualname(b.g))
输出结果同样符合预期。
内容的提问来源于stack exchange,提问作者Marek
相关产品推荐
相关产品推荐

