如何在我的库中隐藏导入?
library.py
import numpy as np
test.py
import library
print(dir(library))
结果(python3 test.py)
['__builtins__', '__cached__', '__doc__', '__file__',
'__loader__', '__name__', '__package__', '__spec__',
'np']
问题:np
是图书馆的一个模块。
隐藏我用于编写库的库有什么明智的方法?
答案 0 :(得分:3)
如果您想将导入标记为不是公共API的一部分,请为模块指定一个带有前导下划线的名称:
.noUi-handle { display:none; }
如果要完全隐藏名称,则需要在使用NumPy的模块的每个函数内执行导入:
import numpy as _np
答案 1 :(得分:2)
您可以将代码组织为一个模块,其中__init__.py
文件指定了您的库提供的内容。因此,你可能会有像
实际的库实现:
# ./library/mycode.py
import numpy
def f():
pass
def g():
pass
init文件:
# ./library/__init__.py
from library.mycode import f, g
现在我们测试一下:
# ./test.py
import library
print dir(library)
请注意,虽然这会隐藏来自您库的顶级属性的numpy导入,但是一个充分确定的用户仍然可以通过library.mycode.numpy
获取它。尽管如此,这有效地向您的用户展示了您希望作为库的API公开的内容,并符合Python的“我们都是成年人”的理念。