python - python对象可以有嵌套属性吗?

标签 python object nested hierarchy nested-properties

我有一个对象定义如下

class a():
    @property
    def prop(self):
        print("hello from object.prop")
        @property
        def prop1(self):
            print("Hello from object.prop.prop")

当我打电话

>>> obj = a()
>>> obj.prop
hello from object.prop
>>> obj.prop.prop

我收到以下回溯错误

Traceback (most recent call last):
  File "object_property.py", line 13, in <module>
    a.prop.prop1
AttributeError: 'NoneType' object has no attribute 'prop1'

我想弄清楚的是我是否可以为对象定义嵌套属性?

最佳答案

回溯是因为你的属性没有return语句,因此它返回NoneType,这显然不能有它自己的属性。您的属性可能需要返回另一个类的实例,该类具有自己的 prop 属性。像这样:

class a():
    def __init__(self):
        self.b = b()
    @property
    def prop(self):
        print("hello from object.prop")
        return self.b

class b():
    @property
    def prop(self):
        print("Hello from object.prop.prop")

x = a()
print x.prop.prop
>> hello from object.prop
>> Hello from object.prop.prop
>> None

关于python - python对象可以有嵌套属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17914737/

相关文章:

python - 为什么 bool(xml.etree.ElementTree.Element) 评估为 False?

PYTHON - 如何返回 cv2.imshow 窗口的窗口大小?

python - 如何在 AWS Elastic Beanstalk 中配置 pip.conf?

R 根据匹配的嵌套列表名称对嵌套列表元素应用函数

python - 为什么在Python的交互式解释器中有时会输出转义字符?

c++ - 使用构造函数 Vs 动态初始化对象。 C++ 中的新功能?

javascript - 我必须返回过滤后的对象

javascript - 有什么是 Object.create() 可以做但工厂函数不能做的事情吗?

xslt - XSLT 中的嵌套循环

java - 嵌套 try catch