我正在尝试创建一个创建类的函数,并将这些类附加到列表中。
当我运行程序时:我收到以下错误:
NameError:名称'jackie'未定义
这意味着只能使用函数内部的实例。我怎样才能使它全球化?我试过global eval('jackie')
但是没有用。
population =[]
class person():pass
def createdarwin(name):
global population
darwin=p.image.load('darwin.png')
vars()[name]=person(darwin)
population.append(name)
def main():
createdarwin('jackie')
for i in population:
eval(i).update()
答案 0 :(得分:5)
如果您想要变量命名变量,请改用字典。那么您不需要vars()
,也不需要eval()
:
population = {}
class Person(object):
pass
def create_darwin(name):
darwin = p.image.load('darwin.png')
population[name] = person(darwin)
def main():
create_darwin('jackie')
for name in population:
population[name].update()