如果我有这样的目录结构:
package/
__init__.py
functions.py #contains do()
classes.py #contains class A()
Run Code Online (Sandbox Code Playgroud)
我希望能够打电话
import package as p
Run Code Online (Sandbox Code Playgroud)
如何让我的内容functions,classes可访问如下:
p.do()
p.A()
Run Code Online (Sandbox Code Playgroud)
代替:
p.functions.do()
p.classes.A()
Run Code Online (Sandbox Code Playgroud)
文件中的细分只是为了方便(允许更容易的协作),但我更喜欢将所有内容放在同一名称空间中.
小智 14
你可以这样做__init__.py(因为那是你导入的内容import package):
from package.functions import *
from package.classes import *
Run Code Online (Sandbox Code Playgroud)
然而,import *几乎总是一个坏主意,这不是例外.相反,许多软件包显式导入一组有限的常用名称 - 比方说
from package.functions import do
from package.classes import A
Run Code Online (Sandbox Code Playgroud)
这也允许访问do或A直接访问,但它几乎不容易发生命名冲突和其他问题import *.