gpt4 book ai didi

python - Python 中的可链接动态属性

转载 作者:太空宇宙 更新时间:2023-11-04 09:04:23 27 4
gpt4 key购买 nike

我想在 Python 中创建和设置属性的属性值。

这是一个例子:

book = Dynamic()
book.chapter1.section2 = 'abc'

我的书对象没有 chapter1 属性,因此必须在调用 setattr 时创建它。我已经开始工作了:

book = Dynamic()
book.chapter1 = SubDynamic()
book.chapter1.section2 = 'section 2'

但是,我无法弄清楚如何将它连接成一行而不会出现错误告诉我第 1 章不存在。

这是我得到的。

class Dynamic(object):
def __setattr__(self, name, value):
sn = SubDynamic(value)
self.__dict__[name] = v

class SubDynamic(object):
def __init__(self, attr):
value = ""
self.attr = value

def __setattr__(self, name, value):
self.__dict__[name] = value

if __name__ == '__main__':
book = Dynamic()
book.chapter1.section2 = 'abc'

最佳答案

我认为你可以通过实现 __getattr__ 来稍微简化一下:

class Dynamic(object):
def __getattr__(self, name):
sub = Dynamic()
setattr(self, name, sub)
return sub


>>> book = Dynamic()
>>> book.chapter1.section2 = 'abc'
>>> book.chapter1
<test.Dynamic object at 0x7feb0f697910>
>>> book.chapter1.section2
'abc'

关于python - Python 中的可链接动态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22235113/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com