如何在Python中使用globals()访问对象属性?
问题解决思路
你犯的核心错误是:globals()的键是变量名(比如"Image1"),而不是"Image1.path"这种带属性的字符串,所以直接拼接属性名当key肯定找不到,触发KeyError。
正确写法
分两步操作:先从globals()里取出对应的Node对象,再访问它的属性:
# 假设image是整数1 print(globals()[f"Image{image}"].path)
更推荐的优化方案
别用globals()这种容易出错的方式,直接把这些节点放到列表或字典里统一管理:
- 用列表存储:
# 把所有Image节点按顺序放进列表 images = [ Node("I1", path="path", parent=Images, priceL=prices[0:12], fp=np.array([70,172])), Node("I2", path="path2", parent=Images, ...), # 其他节点 ] # 访问第1个节点的path属性 print(images[0].path)
- 用字典存储:
# 用变量名当key,节点对象当值 images = { "Image1": Node("I1", path="path", ...), "Image2": Node("I2", path="path2", ...), } # 直接通过key访问对应节点的属性 print(images["Image1"].path)
这种方式代码更清晰,也避免了全局变量操作的风险。
内容的提问来源于stack exchange,提问作者user15819643
相关产品推荐
相关产品推荐

