我的目录中有以下文件:
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 最佳实践。