Python の __all__ モジュールレベル変数は何のためにあるのですか? [重複] 質問する

Python の __all__ モジュールレベル変数は何のためにあるのですか? [重複] 質問する

私は python/Lib ソース コードでこれをよく見かけますが、それが何のためにあるのかわかりません。

これは、モジュールのアクセス可能なメンバーを制限するために使用されるものだと考えました。そのため、__all__の場合には、 の要素のみが表示されますdir(module)

ちょっとした例を試してみたところ、期待通りに動作しないことがわかりました。

それで... Python__all__モジュール レベル変数は何のためにあるのでしょうか?

ベストアンサー1

これには 2 つの目的があります。

  1. ソースを読めば誰でも公開されているパブリックAPIが何であるかが分かる。防ぐプライベート宣言を詮索するのを阻止しますが、そうしないよう警告する良い手段となります。

  2. を使用する場合from mod import *、 にリストされている名前のみが__all__インポートされます。これはそれほど重要ではないと思います。すべてをインポートするのは本当に悪いアイデア。

おすすめ記事