내가 보려고 만든 블로그
<파이썬> __init__.py 와 __all__ 본문
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 |
---|