0

我有一个具有这种结构的 python 包:

package/
       __init__.py
       subA/
           __init__.py
           A.py
       subB/
           __init__.py
           B.py

package/__init__.py我添加了两个语句:

import subA
import subB

我想要实现的是能够使用导入整个包import package并且能够使用package.aubApackage.subB.

它可以工作,但是我不能只加载package.subA. 如果我使用import package.subAthen 也是package.subB导入的。如果我使用import package.subA as sA,那么只有 sA 可用。

这是正常行为,还是我做错了什么?如何选择使用import package或仅导入单个子包而不加载所有其他子包来导入所有语句?

4

1 回答 1

0

这是正常行为。既然你有

import subA
import subB 

如果您在__init__.py文件中添加一些打印语句,您会更好地理解它。当您执行类似的导入时import package.subA,它会'package'被导入。

This is package's __init__ file

This is subA's __init__ file

This is subB's __init__ file

执行 print dir() 也会增加清晰度。

当你这样做import package.subA

['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'package']

当你这样做import package.subA as sA

['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'sA']

于 2013-05-10T10:10:14.610 回答