首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改名称依赖于上下文的全局变量?在python中

问如何更改名称依赖于上下文的全局变量?在python中
EN

Stack Overflow用户
提问于 2021-05-10 21:22:21
回答 1查看 23关注 0票数 0

我遇到了一个在所有程序中都会遇到的困难。问题是,如果我没有显式可写的变量名称,我就不能成功地更改函数或类中的全局变量。

这是我不能工作的最后一个例子:

对于上下文,inputBox类允许用户在窗口中显示的框中输入文本,该框存储在属性编辑器( attribute self.text )中。game类将问答式游戏的许多参数组合在一起,例如每个问题的时间(qtime)、问题的数量(nq)……我根据以下原型结构将所有游戏的所有方框分组到一个字典列表中:gameDictList = [{game1qtime : 20, game1nq : 10}, {game2qtime : 15, game2nq : 5}], etc

我想要做的是根据用户在inputBoxes中输入的内容来更改game参数,但是如果我这样写:

代码语言:javascript
复制
for box in gameDict :
    gameDict[box] = int(box.text)
    print(gameDict[box]) # print the modified value
    print(CM1game.qtime) # print the (unfortunately) unchanged value

gameDict是gameDictList[i],i是危险的游戏。

我对这个问题的理解如下:我不能更改gameDict[box]重定向到的类变量,但我也不能将它声明为全局变量,因为它的名称取决于具体情况。我也不能在我的程序中编写global game1.qtime,除非我想在我的程序中引发错误。我的问题是,有没有一种方法可以让它启动并运行?我是否应该重新设计程序的结构,并使用可预测的参数列表(第一项总是引用qtime,第二项总是引用nq...)来构建这些方法,这会使我的代码变得复杂,并限制我只能使用我可以使用的参数;我是不是做错了什么?

我感谢你阅读这篇文章,希望能找到答案。

威廉

EN

回答 1

Stack Overflow用户

发布于 2021-05-10 22:38:14

我不认为从dict到list的改变有任何帮助。

在您的代码示例中,为什么会期望CM1game.qtime发生变化?

因此,为了解决这个问题,似乎你有一个类Game,它有像qtime这样的参数。

然后,您希望显示输入框,其中每个输入框都与给定的游戏实例和给定的参数相关联。

因此,在你的代码中的某个地方,你需要建立这种连接,最好是显式地建立这种连接,例如,通过一个字典将输入框映射到他们应该修改的相关游戏对象。这比依赖全局变量名的格式要好得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67471244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档