내가 보려고 만든 블로그

<파이썬> __init__.py 와 __all__ 본문

Python | Web

<파이썬> __init__.py 와 __all__

정의김 2021. 11. 22. 20:00
from torchvision import datasets
datasets.MNIST(~~~)

torchvision에서 제공하는 mnist 데이터셋으로 연습을 하려고 하다가 문득 궁금증이 들었다. torchvision의 소스코드를 확인해보았더니

dataasets 라는 디렉토리 안에 mnist.py 가 존재하고  , mnist.py 안에 MNIST 클래스가 존재하였다.

즉, datasets.mnist.MNIST 인데 어떻게 datasets.MNIST 만으로 MNIST 클래스가 불러와지는지가 궁금해졌다.

 

datasets의 __init__.py 안에서 다음과 같은 코드를 찾을수가 있었다. __init__.py는 파이썬 파일을 패키지로 인식할 수 있도록 도와주는 파일로 알고있다. 이 __init__.py 에 위 사진과 같이 .mnist 현재 디렉토리의 mnist 파일에서 MNIST 클래스를 가져오게 하는 부분이 적혀있다. 이런 방법을 통하여 .mnist.MNIST 가 아니라 바로 MNIST 만으로 클래스를 가져올 수 있었던 것이었다.

두번째로 알게 된 것은 __all__ 이다 . 나는 import * 을 할 경우 단순히 모든 내장 모듈 , 함수, 클래스등을 가져온다고만 알고 있었다. 하지만 알고보니 __all__ = (  )  안에 적어둔 모듈들을 가져오는 것이었다!!!

 

'Python | Web' 카테고리의 다른 글

정규표현식 간단 정리  (0) 2022.06.30