2014-09-06 2 views
0

일부 개념적 의구심이 있습니다. 이 코드에서 :Python 범위에 대한 의문이 생깁니다

here in A 
flying 1 
flying 2 
here in main 
another flying 
flying/here in B 

질문 :

class A: 
    print "here in A" 

print "flying 1" 

def main(): 
    print "here in main" 

print "flying 2" 

if __name__ == "__main__": 
    main() 
    print "another flying" 

class B: 
    print "flying/here in B" 

    def __init__(self): 
     print "built in B" 

출력은 다음과 같습니다 A의 인스턴스가 더있을 때 "here in A"가 인쇄되지됩니다 왜

1 .-? (경고/오류 정보 없음)

2. "flying"의 범위는 무엇입니까? 모두 인쇄됩니다. Python의 구문 분석 규칙을 이해할 수 없습니다.

3 - 1과 동일 - 왜 B의 인스턴스가 없을 때 "여기 B"가 인쇄됩니까?

4. 기본 클래스 생성자와 같은 것이 있습니까? 혼란하지만 '유사한 코드'죄송합니다

예를 들어, C++를 컴파일하지 않을 것

답변

3

1 : 인쇄 문은 클래스를 정의 할 때, 같은 방법으로 정적 클래스 변수없이 할당 될 것입니다 실행됩니다 인스턴스가 필요합니다. 인스턴스가 생성 될 때만 실행하려면 __init__ 메서드를 사용하여 문을 넣습니다. 그렇지 않으면 인스턴스가 호출 할 수있는 클래스 정의 내에 다른 함수를 정의합니다.

2 : 파이썬에는 실제로 자바와 다른 언어와 같은 main() 함수가 필요하지 않습니다. 따라서 파일 전체가 실행되어 날으는 것들이 인쇄됩니다. 실행되지 않는 유일한 부분은 "내장 된 B"와 같은 함수 정의 내에 있습니다.

3 :에

Object o = new Object();

파이썬에서

o = object()은 동일합니다 : 당신이 object() 생성자를 참조 할 수도 있습니다 당신이 정확히 무엇을 의미하는지 모르겠지만 1.

4 참조 자바.