在Python中使用字符串作为名称来实例化对象

时间:2014-10-24 04:16:46

标签: python string object instantiation using

就目前而言,我正在从文件中读取行来创建“Monster”对象,每个对象都有一些int和string变量。每2行创建一个对象:一个用于字符串,一个用于整数。 示例文件:

Slime,Slime ball
4,0,2,1,5,6,1
Pig,Pig skin
6,1,3,2,6,4,1

这是我从文件中读取的代码:

def read_from_file(file_name):
file = open(file_name)
monster_list = []
line_type = 1 #1=Monster Name, 2=Monster values
for each_line in file:
    if line_type == 1:
        #initialize the monster name
        value_list = each_line.split(",")
        name, trophy = value_list #name = first element, trophy = 2nd element
        line_type = 2
    else:
        if line_type == 2:
            #read values for monster values
            value_list = each_line.split(",") #now ['4','5',...]
            value_list = [int(e) for e in value_list] #now [1,2,3...]
            hp,shield,ap,mod,exp,gold,trophy_count = value_list
            line_type = 1
        monster_list.append(Monster(name, hp, shield, ap, mod, exp, gold, trophy, trophy_count))
#monster(monster_name)
file.close() #Close the file
return monster_list

有没有办法改变monster_list.append(...)行以使用name变量来实例化名称的Monster对象? 即,

name = Monster(name, hp, shield, ap, mod, exp, gold, trophy, trophy_count)
monster_list.append(name)

这是可能的,还是有类似的方法来实现这个目标?

1 个答案:

答案 0 :(得分:1)

据我所知,没有办法做到这一点。原因(据我所知),没有实际用途。

我可以通过这样做询问你想要完成的事情吗?即使有可能,我也有一种感觉,有更简单的方法来获得你想要达到的结果......

编辑:

从你的评论我会说你应该使用字典而不是列表。这将允许您执行以下操作:

monster_dict[name] = Monster(name, hp, shield, ap, mod, exp, gold, trophy, trophy_count))

随后,在调用' read_from_file'的函数中,您将能够从字典中检索每个怪物的名字:

slime = monster_dict['Slime']