2012-06-18 24 views
2

我想创建一个类的函数,并将这些类追加到列表中。使用在其外部创建的实例吗?

当我运行程序:我收到以下错误:

NameError: name 'jackie' is not defined

这意味着只能用函数内部的实例。我怎样才能使它成为全球?,我试过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() 

回答

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() 
+0

非常感谢,你真正简化我试图做:) –

+0

@Felipe如果帮助请接受的答案,关闭问题。 –