假设我有一个模块test.py
:
def foo():
print "foo"
def bar():
print "bar"
def _baz():
print "_baz"
__all__ = ['foo']
和一个main.py
:
from test import foo, bar, _baz
foo()
bar() # breaks module privacy
_baz() # breaks module privacy
是否有任何用于 Python 的(静态)代码分析器工具可以捕获破坏隐私(bar
,_baz
)暗示的导入__all__
?
我已经测试了 Pylint,但它也没有捕捉到。
另一个澄清:我不是在谈论__all__
动态修改/填充和/或导入代码是动态的情况。只是静态可分析的代码情况。