示例:mypkg/submodule.py
内置了MyClass
类。
我希望能够做到:
import mypkg
obj = MyClass()
为了使用默认导入功能,我需要做些什么?
我注意到from pkg import *
和import pkg.submodule
工作正常,但我想更改默认导入的行为。
这显然与__init__.py
和__all__
相关。
答案 0 :(得分:5)
你不能正常地做到这一点(我想有一些疯狂的黑客可能是可能的)。你要么:
from mypkg.submodule import MyClass
或者,如果您在包中正确设置__init__.py
,则可以:
from mypkg import MyClass
答案 1 :(得分:1)
这是不可能的,一个简单的python导入只会将模块添加到当前命名空间。
现在有3种方法可以导入MyClass
:
# mypkg/__init__.py
from submodule import MyClass
__all__ = ["MyClass"]
# mypkg/submodule.py
def MyClass(obj):
pass
# test-usage.py
import mypkg
mypkg.MyClass()
# test-usage-2.py
from mypkg import MyClass
MyClass()
# test-usage-3.py
from mypkg import *
MyClass()