[英]How can I convince Python to import a class from a submodule when you import the package?
示例: mypkg/submodule.py
其中包含类MyClass
。
我希望能够做到:
import mypkg
obj = MyClass()
为了使此功能与默认导入配合使用,我需要做什么?
我注意到from pkg import *
和import pkg.submodule
可以正常工作,但是我想更改默认import的行为。
这显然与__init__.py
和__all__
。
您通常无法做到这一点(我想可能会有一些疯狂的黑客入侵)。 您要么有:
from mypkg.submodule import MyClass
或者,如果您在软件包中适当地设置了__init__.py
,则可能会有:
from mypkg import MyClass
不可能,简单的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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.