-
[python] __all__ 을 이용해 전체 임포트 막기개발 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()
접근 제한을 걸어줄 수 있다는 측면에서 유용할 듯 하다.
'개발' 카테고리의 다른 글
[Python] Decorator (0) 2024.05.17 [파이썬] 파이썬은 모든것이 객체다 (0) 2024.05.09 __init__.py 를 이용한 모듈 관리 (0) 2024.05.08 파이썬 - 리스트 컴프리헨션 (0) 2024.05.03 Session, Cookie, CSRF (0) 2023.06.03