[英]Import classes from submodules into (aliased) namespace
我有以下包結構:
package_name/
__init__.py
some_module.py
another_module.py
# other classes
我正在使用另一個Python文件中的此程序包,在其中執行以下操作:
聲明package_name
的別名
import package_name as pn
並參考some_module.py
, another_module.py
等內部的some_module.py
,如下所示:
instance = pn.SomeClass(pn.AnotherClass(x, y))
即省略模塊名稱,而僅使用包名稱別名。
像這樣:
import package_name as pn
from package_name import some_module to pn
這是可能的,或等同的嗎?
我可以做這個:
from package_name.some_module import SomeClass
from package_name.another_module import AnotherClass
instance = SomeClass(AnotherClass(x, y))
和這個:
import package_name.some_module
import package_name.another_module
instance = pn.some_module.SomeClass(pn.some_module.AnotherClass(x, y))
但這不起作用
import package_name.some_module as pn
import package_name.another_module as pn
instance = pn.SomeClass(pn.AnotherClass(x, y))
因為第二個as pn
優先於第一個。
從包中導入單個模塊的語法為:
from package_name import some_module as pn
要從package_name
訪問其他模塊中定義的類,正確的做法是將這些類顯式或使用某種工具導入package_name中的__init__.py
文件:
package_name/__init__.py
:
from .some_module import a_class
from .another_module import another_class
這將使您可以簡單地執行以下操作:
import package_name as pn
pn.a_class
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.