【发布时间】:2017-04-10 13:58:29
【问题描述】:
考虑以下python 包结构
working_directory/
-- test_run.py
-- mypackge/
---- __init__.py
---- file1.py
---- file2.py
在file1.py 里面说我定义了一个函数func1(),我还从numpy 导入了一些函数,比如from numpy import array。现在我想从test_run.py 导入和使用mypackage 而不在命名空间中看到这些numpy 函数。我想使用import mypackage as mp 导入它并查看
mp.file1.func1()
mp.file2.func2()
etc
我不想看到mp.file1.array()。我该怎么做?
【问题讨论】:
-
你不能不删除它,但是
file1中的功能将无法访问它。我有一种感觉,这是一个 XY 问题。为什么要这样做? -
你不能直接这样做。如果您想如此密切地管理命名空间,您将需要一个位于
file1的存根文件,它只从file1x导入您需要的东西,其中filex是您当前的文件1,已重命名。 -
如果你不想看到
mp.file1.array(),正确的解决办法是一开始就不去找。 -
好吧,我想从“mypackage”中以有组织的形式提供我的功能,如果我需要使用一些软件来实现它们,我不希望从外部访问它,因为它是不必要的......这是错的吗?
-
原则上你没有错。但是我认为这是一场不值得战斗的战斗......您可以考虑使用
import numpy as np和np.array来尽可能干净。另外,您不希望用户只查找您在文档中解释的功能吗?
标签: python