gpt4 book ai didi

python - 从 python 中的点表示法字符串设置嵌套对象属性

转载 作者:行者123 更新时间:2023-12-01 02:09:56 25 4
gpt4 key购买 nike

我正在编写一个函数,该函数接受父对象data和字符串inputString,该字符串可能包含也可能不包含表示嵌套对象的点表示法(即“nestedObject”) .itemA)。该函数应将 datainputString 属性设置为随机字符串。如果字符串 inputString 是嵌套对象,则该函数应将嵌套对象的值设置为随机字符串。我不知道如何在 for 循环中处理这一切。我想做这样的事情:

split_objects = value.split(“.”)
for item in split_objects:
data.__setattr__(item, get_random_string())

但是,对于嵌套对象,上面的代码会将嵌套对象设置为随机字符串,而不是内部的字段。有人可以帮助我处理这两种情况的语法吗?预先感谢...

最佳答案

您需要先获取对 data.nestedObject 的引用,然后才能使用 setattr 更改 data.nestedObject.itemA

prefix, suffix = value.rsplit(".",1)
# now prefix is nestedOjbect and suffix is itemA
ref = getattr(data,prefix)
setattr(ref,suffix,get_random_string())

您需要获取与 inputString 中的点一样多的引用。因此,如果 data 中有任意深度嵌套的结构

value = "nestedObject.nestedObject2.nestedObject3.itemA"
path, attribute = value.rsplit(".",1)
path = path.split(".")
ref = data
while path:
element, path = path[0], path[1:]
ref = getattr(ref, element)
setattr(ref, attribute, get_random_string())

关于python - 从 python 中的点表示法字符串设置嵌套对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48762797/

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