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

如何为Python类中的子对象设置属性以实现嵌套对象访问?

解决嵌套对象属性访问的问题

你的错误原因很明确:sub_obj被赋值为字典,而字典只能通过键值对(sub_obj['b'])访问,无法用属性(.b)的方式操作。要实现你要的嵌套对象属性访问,有几种简单方案:

方案一:自定义嵌套类

直接在Example内部定义一个子类,实例化后作为sub_obj:

class Example:
    class SubObj:
        def __init__(self, b):
            self.b = b

    def __init__(self, a, b):
        self.a = a
        self.sub_obj = self.SubObj(b)

测试验证:

>>> obj = Example('hi', 'hello')
>>> obj.a 
'hi'
>>> obj.sub_obj.b
'hello'

方案二:使用types.SimpleNamespace(Python 3.3+)

这是Python标准库提供的轻量级空对象,专门用来快速创建带属性的简单对象:

import types

class Example:
    def __init__(self, a, b):
        self.a = a
        self.sub_obj = types.SimpleNamespace(b=b)

方案三:使用dataclasses(Python 3.7+)

如果需要更规范的数据结构,用数据类更简洁:

from dataclasses import dataclass

@dataclass
class SubObj:
    b: str

class Example:
    def __init__(self, a, b):
        self.a = a
        self.sub_obj = SubObj(b)

以上三种方案都能满足你通过obj.sub_obj.b访问属性的需求,根据你的Python版本和实际场景选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:15:59