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

Python中如何在父类方法内无需实例化访问子类的__class__属性

解决方案

可以通过@classmethod装饰器实现你的需求,不需要实例化类,直接通过类名调用即可拿到子类引用:

class A:
    @classmethod
    def f(cls):
        print(cls)

class B(A):
    pass

B.f()
# 输出结果:<class '__main__.B'>

原理解释

  • 你最开始写的无参方法里的__class__是函数定义阶段就绑定到定义所在的A类的词法变量,不会随调用方的类变化,所以调用B.f()始终输出A类。
  • @classmethod装饰的方法会自动把调用该方法的类本身作为第一个参数cls传入,不管是父类还是子类调用,cls都会对应到实际调用的类对象,完全不需要额外实例化类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:36:03