如何为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
相关产品推荐
相关产品推荐

