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

Python疑问:为何类实例无法访问__bases__属性?

为什么Python实例不能直接访问__bases__属性?
  • __bases__是类对象专属的特殊属性,Python并没有开放让实例直接访问它的权限。
  • 虽然实例查找属性时,确实会先查自身__dict__,再回溯到类的__dict__,但像__bases__、__name__这类类级别的特殊属性,Python做了特殊处理,不会让实例通过常规属性访问路径获取到。

举个实际代码例子:

class C1:
    pass

# 类对象可以正常访问__bases__
print(C1.__bases__)  # 输出: (<class 'object'>,)

obj1 = C1()
# 实例直接访问会报错
print(obj1.__bases__)  # 抛出 AttributeError: 'C1' object has no attribute '__bases__'

如果需要通过实例获取类的基类,你可以先拿到实例所属的类,再访问__bases__:

# 两种写法效果一致
print(type(obj1).__bases__)
print(obj1.__class__.__bases__)

简单总结:普通类属性可以被实例直接访问,但Python为类对象保留了一批特殊属性,__bases__就是其中之一,只能由类本身访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:12:04