繁体   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