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

子类中如何访问父类受保护变量?遇AttributeError问题求助

子类访问父类受保护变量的正确方式

你的代码报错有两个关键原因:

  • 父类A里只给_useful加了类型注解,却没有初始化这个属性——Python的类型注解不会自动创建属性,实例化后这个属性根本不存在。
  • 哪怕父类初始化了_useful,用super()._useful访问也不符合Python的惯例,受保护的实例属性应该通过self来访问,super()主要用来调用父类的方法,不是直接访问实例属性。

修正方案

先把父类A的_useful初始化:

class A:
    def __init__(self):
        self._useful = {}  # 初始化实例属性,也可以加上类型注解:self._useful: dict = {}

然后子类B直接通过self访问_useful:

class B(A):
    def foo(self, key, value):
        self._useful.update({key: value})

特殊情况:如果_useful是类属性

要是_useful是父类的类属性(所有实例共享),那可以直接用A._useful或者super()._useful访问,但前提是父类要定义这个类属性:

class A:
    _useful: dict = {}  # 定义类属性

class B(A):
    def foo(self, key, value):
        A._useful.update({key: value})
        # 或者用 super()._useful.update(...) 也能生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:00:17