개발
[python] __all__ 을 이용해 전체 임포트 막기
kwony
2024. 5. 8. 10:27
메타클래스 __all__ 을 활용하면 패키지 전체 임포트시 특정 클래스나 메소드만 임포트 되도록 제한할 수 있다.
transporation.py 에서 Bus, Taxi, Subway 클래스를 선언하고 __all__ 에는 Bus와 Taxi 만 추가했다
# transporation.py
class Bus:
pass
class Taxi:
pass
class Subway:
pass
__all__ = ["Bus", "Taxi"]
main.py 에서 transporation.py 파일 내부 클래스를 전체 임포트하고 사용하면
from transporation import *
sb = Subway()
Subway 를 찾을 수 없다고 나온다.
➜ clean-python python3 main.py
Traceback (most recent call last):
File "/Users/user/study/python/clean-python/main.py", line 3, in <module>
sb = Subway()
^^^^^^
NameError: name 'Subway' is not defined
Subway 를 사용하려면 전체 임포트가 아니라 직접 임포트를 해야한다
from transporation import Subway
sb = Subway()
접근 제한을 걸어줄 수 있다는 측면에서 유용할 듯 하다.