使用在函数内部创建的实例吗?

时间:2012-06-18 18:41:39

标签: python class global instances

我正在尝试创建一个创建类的函数,并将这些类附加到列表中。

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

  

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

1 个答案:

答案 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()