将 类 从子模块导入(别名)命名空间
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
等里面的类如下:
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
访问其他模块中定义的 类,正确的做法是将这些 类 显式或使用某种工具导入到__init__.py
里面的文件 package_name:
package_name/__init__.py
:
from .some_module import a_class
from .another_module import another_class
这将允许您简单地做:
import package_name as pn
pn.a_class
我有以下包结构:
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
等里面的类如下: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
访问其他模块中定义的 类,正确的做法是将这些 类 显式或使用某种工具导入到__init__.py
里面的文件 package_name:
package_name/__init__.py
:
from .some_module import a_class
from .another_module import another_class
这将允许您简单地做:
import package_name as pn
pn.a_class