2011-08-28 1 views
0

어디서나이 답변을 찾을 수 없습니다. bpython -i & namespace

은 사소한 예를 감안할 때 : 나는 -i myclass.py bpython 실행하면

# myclass.py 
class MyClass: 
    def __init__(self): 
     print 'test' 

def main(): 
    my_class_instance = MyClass() 

if __name__ == '__main__': 
    main() 

some_var = 'i exist! ... but I think I'm in global namespace?' 

, 나는 bpython 환경으로 프로그램 & 드롭을 실행합니다. 내가 속한 네임 스페이스는 - my_class_instance가 존재하지 않습니다. 그러나 some_var는 존재하며 주요 함수 자체도 존재합니다.

대화 형 프롬프트에 드롭 인 경우 주 기능에있는 모든 개체를 네임 스페이스에 끌어다 놓을 수 있습니까? 아니면 제가해야 할 일이 있습니까?

답변

1

my_class_instancemain의 네임 스페이스이므로 main 외부에서는 볼 수 없습니다. 대신 지구를 사용 : 나는 다시 주요 기능을 실행에서 무언가를 할 때

my_class_instance = None 

def main(): 
    global my_class_instance 

    my_class_instance = MyClass() 
0

또 다른 트릭은 가끔 사용하는 것은 내가 주 말에 필요한 반환하는 것입니다.

def main(): 
    myclass = MyClass() 
    a = 4 
    return (my class, a) 

if __name__ == '__main__': 
    ret = main() 

지금 -i 당신이해야합니다 SCRIPTNAME bpython와 스크립트를 호출하는 경우 :

그래서 예를 들어 나는 사람이 할 수있는 인스턴스 및 최상위 레벨의 주요 기능에서 다른 변수를 필요로하는 경우 전역 네임 스페이스의 변수 ret와 ret [0]에 클래스 인스턴스가 있고 ret [1]에는 숫자 4가 있습니다.