python3 import class in the package
結論から書く。
やりたかったこと、mypackage.mymodule.myclass
を mypackage.myclass
として呼び出したかった。
見つけたのは2通りの方法。
(1) モジュールをパッケージ名にしちゃう。
/mypackage
__init__.py (empty)
mymodule.py
class myclass:
pass
main.py
import mypackage.mymodule as mypackage
print(mypackage.myclass)
>>> <class 'mypackage.mymodule.myclass'>
(2) パッケージ側で予めインポートしておく。
/mypackage
__init__.py
from .mymodule import myclass
mymodule.py
class myclass:
pass
main.py
import mypackage
print(mypackage.myclass)
>>> <class 'mypackage.mymodule.myclass'>
どっちがスマートなんだろうか?
もしパッケージ内に複数のモジュールが含まれるなら、(1)の方法は使いづらい。が、(2)のパッケージ側で予めインポートした場合、不要なものまで勝手にインポートしちゃってるかもしれん。