簡體   English   中英

導入程序包時,如何說服Python從子模塊導入類?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM