簡體   English   中英

將子模塊中的類導入別名空間

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

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