[Python] all

작성:    

업데이트:

카테고리:

태그: , , ,

all

  • 모듈과 패키지의 공개 여부 결정

가. all 설정 없이 import

from travel import *
trip_to = vietnam.VietnamPackage()
trip_to.detail()

출력결과는 다음과 같다.

    trip_to = vietnam.VietnamPackage()

NameError: name 'vietnam' is not defined

오류는 왜 발생할까.

* 을 쓰는 것은 travel package의 모든 것을 가져오겠다는 뜻이다. 실제로는 개발자가 이 문법상에서 공개범위를 설정해주어야 한다.

**init 파일에 다음과 같이 작성한다.**

__all__ = ["vietnam"]


나. init 파일 수정 후 import

from travel import *

trip_to = thailand.ThailandPackage()
trip_to.detail()

출력결과는 다음과 같다.

trip_to = thailand.ThailandPackage()
NameError: name 'thailand' is not defined

NameError는 왜 발생하는걸까?

**init 파일에서 vietnam에 대해서만 공개했기 때문에 thailand에 대해서는 공개되지 않아 오류가 발생**

init 파일을 다음과 같이 수정한다.

__all__ = ["vietnam", "thailand"]

이후 ThailandPackage class의 detail() 함수 실행시 정상적으로 출력됨을 확인할 수 있다.


Reference

댓글남기기