__all__
とは?
__all__
は、Python
モジュール内で公開したいシンボル(関数、クラス、変数など)を明示的に定義するためのリストです。特にfrom module import *
を使用する際に、インポートされるシンボルを制御する役割があります。
使い方の例
__all__ = ['foo', 'bar']
def foo():
return "foo"
def bar():
return "bar"
def baz():
return "baz"
この例では、foo
とbar
のみがインポート可能になり、baz
はインポートされません。
__all__
の効果
import *
時の制御:__all__
が定義されていれば、from module import *
はそのリストに含まれるシンボルのみをインポートします。- コードの可読性とメンテナンス性の向上: モジュールの公開インターフェースを整理し、他の開発者が使用する際にどのシンボルが重要かを明示できます。
注意点
__all__
はimport *
にのみ影響を与えるため、明示的にfrom module import foo
のように指定した場合には関係なくインポートできます。また、通常import *
は推奨されておらず、特に大規模なプロジェクトでは名前空間の衝突を避けるために注意が必要です。
__all__
は、モジュールの公開APIを整理し、意図しないシンボルのエクスポートを防ぐための重要なツールです。正しい使い方をマスターし、コードの明確さと保守性を向上させましょう。