ファイル__all__
内に表示されます。これは何をするのですか?__init__.py
ベストアンサー1
がいつ使用されるかはリンクされていますが、ここでは明示的には言及されていません__all__
。これは、モジュールで が使用されるときにモジュール内のどのシンボルがエクスポートされるかを定義する文字列のリストですfrom <module> import *
。
たとえば、 内の次のコードは、foo.py
シンボルbar
とを明示的にエクスポートしますbaz
。
__all__ = ['bar', 'baz']
waz = 5
bar = 10
def baz(): return 'baz'
これらのシンボルは次のようにインポートできます。
from foo import *
print(bar)
print(baz)
# The following will trigger an exception, as "waz" is not exported by the module
print(waz)
上記がコメントアウトされている場合、 のデフォルトの動作では、指定された名前空間からアンダースコアで始まらないすべてのシンボルをインポートする__all__
ため、このコードは完了まで実行されます。import *
参照:https://docs.python.org/tutorial/modules.html#パッケージからのインポート
注意: __all__
は動作にのみ影響しますfrom <module> import *
。 で言及されていないメンバーは__all__
モジュールの外部からアクセス可能であり、 を使用してインポートできますfrom <module> import <member>
。