2012-06-18 2 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을 위해 노력했다 간소화 . –

관련 문제