[파이썬] 패키지와 모듈의 all 속성

파이썬에서 패키지와 모듈은 코드를 구조화하고 재사용 가능한 단위로 분할하는 데 사용됩니다. 이를 통해 코드의 가독성과 유지보수성을 향상시킬 수 있습니다. 그리고 __all__ 속성을 사용하여 모듈 또는 패키지에서 공개하고자 하는 요소들을 명시적으로 지정할 수 있습니다. 이번 기사에서는 __all__ 속성의 역할과 사용법에 대해 자세히 알아보겠습니다.

__all__ 속성의 역할

파이썬 모듈은 기본적으로 모든 식별자(함수, 클래스, 변수 등)를 내보내지 않습니다. 대신, 모듈 사용자에게는 명시적으로 공개하고자 하는 식별자를 선택할 수 있도록 해줍니다. __all__ 속성은 이를 위한 도구로 사용됩니다.

__all__ 속성은 모듈 내에서 외부에서 접근 가능한 식별자들을 지정하는 리스트입니다. 이 속성에 지정된 모든 식별자들은 해당 모듈을 import할 때 from module import * 구문을 사용하여 한번에 가져올 수 있습니다.

__all__ 속성 사용법

아래는 module.py라는 모듈에서 __all__ 속성을 사용하는 간단한 예제입니다.

# module.py

def public_function():
    pass

def _private_function():
    pass

class PublicClass:
    pass

class _PrivateClass:
    pass

# __all__ 속성에 공개하고자 하는 요소들을 명시
__all__ = ['public_function', 'PublicClass']

위 예제에서는 __all__ 속성을 사용하여 public_functionPublicClass만 공개하려고 합니다. 동시에 _private_function_PrivateClass는 외부에서 직접 접근할 수 없습니다.

이제 다른 모듈에서 module.py를 import 해보겠습니다.

# main.py

from module import *

# public_function과 PublicClass만 import 됨

위의 코드에서 from module import * 코드를 사용하여 module 모듈의 모든 공개 요소를 가져왔습니다. 하지만 __all__ 속성에 지정된 public_functionPublicClass만 import 되었습니다.

이렇게 __all__ 속성을 사용하면 모듈의 인터페이스를 명시적으로 정의할 수 있고, 실수로 비공개 요소를 외부에 노출시키는 것을 방지할 수 있습니다.

요약

__all__ 속성은 모듈이나 패키지에서 외부에 공개하는 요소를 선택적으로 지정할 수 있는 파이썬 기능입니다. 이를 통해 모듈의 인터페이스를 개발자가 명시적으로 정의할 수 있고, 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.