gpt4 book ai didi

python - setattr() 未设置

转载 作者:太空宇宙 更新时间:2023-11-03 19:32:06 25 4
gpt4 key购买 nike

我有一个类(bot),它有一个属性“health”;由于这个类有很多参数,并且我希望用户输入很多参数,所以我选择循环遍历 {param:explanation} 的字典,并为每个参数输入一个要设置的值。

attr_array = ["health",...]<p></p>

<p>attr_dict = {}
attr_dict["health"] = "your bot's health"
...</p>

<p>for attr in attr_array:
tmp_attr = input(attr + attr_dict[attr] + ": ")
setattr(tmp_bot, attr_dict[attr], tmp_attr)
print attr, getattr(tmp_bot, attr_dict[attr])
print str(tmp_bot.health) + " hp"</p>
因此, print attr, getattr... 行返回(示例)“health 50”但是,打印 str 行返回“0 hp”

发生这种情况有什么原因吗?

最佳答案

来自问题评论:你为什么这样做

 setattr(tmp_bot, attr_dict[attr], tmp_attr)

而不是

 setattr(tmp_bot, attr, tmp_attr)

我想真正的问题是,为什么当一个打印行访问属性“您的机器人的健康状况”而另一个打印行访问属性“健康状况”时,您希望这两个打印行输出相同的结果。

另一个专业提示:您应该将 attr_arr 元素定义为全局字符串(例如,HEALTH =“health”)。这样,您仍然可以打印它们,并键入它们,等等,但如果您不小心在某处键入 HEATH,Python 会提示未定义的全局,而不是稍后神秘地失败。

关于python - setattr() 未设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5281297/

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