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

为何调用super().__dict__会触发AttributeError?

为什么访问super()对象的__dict__会触发AttributeError?

先看你的代码:

class A:
    def f(self):
        print(super().__dict__)

A().f()  # raises AttributeError: 'super' object has no attribute '__dict__'

原因很直接:

  • super()返回的是一个代理对象,它的唯一作用是帮你代理访问当前类MRO(方法解析顺序)链中父类的属性和方法,本身并不是一个普通的类实例。
  • 普通Python实例的__dict__是用来存储自身实例属性的容器,但super代理对象根本不需要这个——它只是个“中间商”,不会存储任何实例属性,自然也就没有__dict__这个属性。
  • 当你尝试访问super().__dict__时,Python会先在super对象本身查找该属性,找不到就去super类里找,而super类本身并没有定义__dict__,所以直接抛出AttributeError。

如果要访问实例自身的属性字典,直接用self.__dict__就可以,super对象不是干这个用的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:35:54