【发布时间】:2023-04-06 14:28:01
【问题描述】:
我的目录中有以下文件:
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 最佳实践。
【问题讨论】:
标签: python