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

Python中子类为何不继承__doc__属性/方法?同类特殊成员有哪些?

__doc__继承异常的原因及同类特殊成员解析

为什么子类无法继承父类的__doc__属性/方法?

Python中,__doc__是类级别的特殊属性,默认用于存储类的文档字符串。当你定义子类时,Python解释器会自动为子类生成专属的__doc__属性:

  • 如果子类没有写文档字符串,解释器会把它设为None;
  • 这个自动生成的类级__doc__会直接覆盖从父类继承来的同名实例方法或property。

看你提供的代码:

  1. 当你在父类里把__doc__定义为实例方法时,子类Child的类级__doc__被解释器设为None,所以实例访问Child("test").__doc__时,拿到的是类的None,而非父类的实例方法,调用自然会报错。
  2. 当你把__doc__定义为property时,同理,子类实例访问__doc__优先取类级的None,完全不会触发父类定义的实例property逻辑。

而__other__是普通的自定义双下划线成员,不属于Python的特殊内置属性,所以遵循正常的继承规则,子类实例能正常继承调用。

还有哪些具有类似继承特性的成员?

Python中还有几个解释器会自动处理的特殊类属性,它们不会从父类继承,而是每个类拥有自己的专属值:

  • __module__:存储类定义所在的模块名,子类会自动设置为自身定义的模块,不会继承父类的__module__;
  • __qualname__:类的限定名称(反映类的层级结构),子类会生成自己的__qualname__,比如嵌套类的__qualname__会包含外层类名;
  • __annotations__:类的注解字典,子类默认拥有空的__annotations__,除非自身定义,否则不会继承父类的注解;
  • __class__:实例属性,每个实例的__class__指向自身所属的类,而非父类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 22:23:35