[英]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.