【问题标题】:input string variable to class object variable python 3输入字符串变量到类对象变量python 3
【发布时间】:2017-01-08 03:19:10
【问题描述】:

您好,我的 pygame 运行良好,但在我闪屏后显示一个显示机器人名称的消息框:
当他们按下回车键
我在一个名为 new_robot1 (ex."Crusher") 的字符串变量中获得了大写的名称

我使用 new_robot1 在类 init 中分配机器人名称参数

我得到第二个字符串变量,名为:data_bot (ex. "crusher") BUT

我似乎在堆栈上的任何地方都找不到如何使用 data_bot 来创建我的类对象

示例代码:data_bot = Robot(初始化类所需的所有参数)但没有
工作,因为 data_bot 是字符串类型

人们在谈论使用字典?

robot_dic = {}
robot_dic['data_bot':crusher]
robot_dic['data_bot'] = Robot(all required params to init class)?????

我是python新手,但我无法定义键值:运行时的破碎机...

一旦我得到 new_robot1 和 data_bot 变量,我就想运行
类似上面示例代码的函数。

请告诉我使用字典解决这个问题的正确方法

【问题讨论】:

  • data_bot = "破碎机"
  • new_bot1 = "破碎机"

标签: python-3.x class variables pygame


【解决方案1】:

如果变量data_bot 包含您要在字典中存储Robot 实例的键,请使用robot_dic[data_bot] = Robot(...)。请注意,此处data_bot 周围没有引号,因为我们希望将字符串存储在该名称的变量中,而不是字符串"data_bot" 本身。

如需更多信息,您可能想read the Python Tutorial's chapter on Data Structures,其中包括介绍字典及其语法的部分。

【讨论】:

  • @Blckknight 好的,只是回答您的 if 问题:data_bot 包含字符串“crusher”,它在创建实例时仍然有效吗?感谢您的回复!
【解决方案2】:

globals()[data_bot] = Robot(...)

创建实例后,我测试了:dir()、type,并使用变量名称 crusher 调用了类的预定义属性(例如):) 一切都很好。

然后我在创建类对象后将两个使用的变量重命名为“”
(如果再次运行,程序已准备好创建另一个瞬间)
我只是确保测试,所以将来不会进行覆盖

如果有人看到我将来会遇到的任何墙壁/安全问题,请您发表评论吗?

我知道我目前不会将全局变量用于其他任何事情。
谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 2012-01-29
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多