Works by

Ren's blog

@rennnosuke_rk 技術ブログです

【python】"import *" でインポートされるモジュールを制限する

パッケージ中の__init__.py内で__all__変数を書き換えることで、import *でimportするモジュールを制限することができます。

__all__ = ["hoge", "fuga", "piyo"] 

このような記述を例えばpackage/__init__.pyが含むとき、 from package import *によってimportされるモジュールはhoge,fuga,piyoのみとなります。

デフォルトではfrom hoge import *の記述によってhoge中の全モジュールをimportできますが、 使わないモジュールのimportが発生する、名前空間を汚染するという点で推奨されていません。 一方で、冗長なモジュール記述を避けられるというメリットがあります。

importしたいモジュール群がある程度fixしているとき、この手法が使えそうです。

参考文献

https://docs.python.jp/3/tutorial/modules.html#importing-from-a-package