就目前而言,我正在从文件中读取行来创建“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)
这是可能的,还是有类似的方法来实现这个目标?
答案 0 :(得分:1)
据我所知,没有办法做到这一点。原因(据我所知),没有实际用途。
我可以通过这样做询问你想要完成的事情吗?即使有可能,我也有一种感觉,有更简单的方法来获得你想要达到的结果......
编辑:
从你的评论我会说你应该使用字典而不是列表。这将允许您执行以下操作:
monster_dict[name] = Monster(name, hp, shield, ap, mod, exp, gold, trophy, trophy_count))
随后,在调用' read_from_file'的函数中,您将能够从字典中检索每个怪物的名字:
slime = monster_dict['Slime']