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

如何从未绑定的类方法中获取其所属类的引用?

是否可以在类实例化之前,访问将函数定义为方法的所属类?

在Python中,直接通过类获取方法(比如m1 = MyClass.method)得到的是未绑定的普通函数(Python 3已移除专门的未绑定方法对象)。它不像绑定方法(如m2 = instance.method)那样有__self__属性关联实例,所以没法直接用类似m2.__self__.__class__的方式拿到所属类。

你提到的__qualname__确实是可行方案,它会返回包含类名和方法名的字符串,格式为'类名.方法名',我们可以通过解析这个字符串获取类的引用:

示例代码

class MyClass:
    def method(self):
        print("Calling me")

m1 = MyClass.method

# 从m1获取MyClass的引用
qualname_parts = m1.__qualname__.split('.')
# 顶层类取第一个部分,嵌套类需对应调整索引
class_name = qualname_parts[0]
# 从全局命名空间中获取类对象
my_class_ref = globals()[class_name]

print(my_class_ref)  # 输出: <class '__main__.MyClass'>

注意事项

  • 如果类是嵌套在其他类或模块中的,要根据__qualname__的层级调整拆分逻辑,比如嵌套类的__qualname__会是'OuterClass.InnerClass.method'。
  • 这种方式依赖__qualname__的格式稳定性,Python官方保证它能准确反映方法归属结构,但如果手动修改过__qualname__会失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:35:13