如何从" str"添加变量名称和值?上课?

时间:2017-01-25 16:25:19

标签: python python-3.x

我有一堂课,我会写更多变量。我成功地使用了其中的信息,并更改了其中的信息,但我无法找到制作新变量的方法。我想使用" c" in" addunitgroup()"定义新变量的名称及其列表。我尝试过使用" c"仅定义变量的名称,但没有运气。

To" class UnitGroups",我想添加:" a2 =("默认",unit_type)

import units

unit_type = (units.Tank1, units.Tank2, units.Tank3, units.Infantry1, units.Infantry2)

class UnitGroups:
    a = "empty"
    a1 = ("default", unit_type)
    create = "1"

def addunitgroup():
    add = ("default", unit_type)
    # UnitGroups.create = add
    for make in range(0, 10):
        if make is int(UnitGroups.create):
            print(def_name, ":   ", "make is UnitGroups.create")
            generate = UnitGroups()

            a = (int(UnitGroups.create) + 1)
            b = "a" + str(a)
            c = str("generate." + b + " = " + str(add))

            # UnitGroups.a = (c, " = ", str(add))
            # exec(str(UnitGroups.a))
            # UnitGroups.a2 = add

            UnitGroups.create = (int(UnitGroups.create) + 1)
            UnitGroups.a = "empty"

if __name__ == "__main__":
    addunitgroup()

我不想改变格式。变量应存储在该类中。

首次使用" addunitgroup()"

后我想要的结果
class UnitGroups:
    a = "empty"
    a1 = ("default", unit_type)
    a2 = ("default", unit_type)
    create = "2"

第二次使用" addunitgroup()"

后我想要的结果
class UnitGroups:
    a = "empty"
    a1 = ("default", unit_type)
    a2 = ("default", unit_type)
    a3 = ("default", unit_type)
    create = "3"

更多额外信息,仅用于显示我当前如何更改类中的变量。我现在不需要帮助,我现在不需要帮助: 这个" load()"功能会改变,并且还会设置变量'值取决于文件告诉它的内容。我还将使用另一个函数来设置变量的值。这个将从一个窗口运行。 (这是目前的计划)

def load():
    UnitGroups.a1 = ("5", units.Tank1)

非常感谢。

  • 安德烈亚斯

2 个答案:

答案 0 :(得分:0)

使用setattr(instance, variable_name, variable_value)

顺便说一句:你定义类的方式,变量属于类本身,而不是实例(大致类似于其他语言中的静态变量)

答案 1 :(得分:0)

class B:
    def __init__ (self):
        self.a = []

    def add (self, value)
        self.a.append (value)

b = B ()       # Constructor __init__ calles, will make empty list inside b
b.add ('john') # Will be in b.a [0]
b.add ('mary') # Will be in b.a [1]

b2 = B ()      # Another instance, to hold different names
b.add ('bjarne') # Will be in b2.a [0]
b.add ('guido')  # Will be in b2.a [1]