ディレクトリに次のファイルがあります。
foo/
foo.py
foolib/
__init__.py
bar.py
__init__.py 内:
__all__ = ["bar"]
bar.py 内:
class Bar:
def __init__(self):
None
def hello(self):
print("Hello World")
return
def hi():
print("Hi World")
foo.py 内に次のコードがあるとします。
from foolib import *
bar.hi()
foobar = Bar()
foobar.hello()
"Hi World" は印刷されますが、Bar() の NameError が発生します。モジュールを明示的にインポートする場合:
from foolib.bar import *
期待される出力「Hello World」が得られます。
クラスを明示的に呼び出さずに、モジュールからクラスをインポートする方法はありますか? __init__ ファイルに何かが欠けているように感じます。それか、Pythonのベストプラクティスに明らかに違反しています。