2010-06-29 4 views
0

파이썬 스크립트의 끝에서 IPython을 호출 할 때 스코프 변수에 문제가 발생했습니다. 스크립트 자체에서 호출하는 모든 함수는 변수를 수정할 수 있습니다. 변수는 이후에 다른 함수에서 사용됩니다. ipython에서 같은 함수를 호출하면 스크립트 된 함수는 변경된 변수에 액세스 할 수 있지만 ipython이 호출 될 때 존재했던 변수는 변경되지 않습니다. 그럼 내 질문 : ipython에 전역 변수를 전파하려면 어떻게해야합니까? (물론 A = globals() [ 'A'] 물론 할 수 있지만 못생긴)IPython 자신의 범위가?

답변

0

해당 클래스의 싱글 톤 인스턴스를 반환하는 정적 메서드 (장식 자 : @staticmethod)를 사용하여 클래스를 만들 수 있습니다. 이 객체에는 전역으로 작동하는 여러 멤버가 포함될 수 있습니다.

class Globals: 
    __master = None 
    somevar = 1 
    othervar = 2 

    @staticmethod 
    def get_master(): 
     if Globals.__master is None: 
      Globals.__master = Globals() 

     return Globals.__master 

g1 = Globals.get_master() 
g2 = Globals.get_master() 
g1.somevar += 1 

print g1.somevar 
print g2.somevar 

인쇄 : StaticMethod를한다

2 
2 
+0

정의? 내장 된가요? – BandGap

+0

파이썬 2.4 이상에 내장되어 있습니다. –