在python中定义私有模块函数


问题内容

根据http://www.faqs.org/docs/diveintopython/fileinfo_private.html

像大多数语言一样,Python具有私有元素的概念:

  • 私有函数,不能 从其模块外部* 调用 *

但是,如果我定义两个文件:

#a.py
__num=1

和:

#b.py
import a
print a.__num

当我运行b.py它打印出1没有给出任何例外。diveintopython是错误的,还是我误会了某些东西?而且是有一些方法可以
定义模块的功能为私有?


问题答案:

在Python中,“隐私”取决于“同意成年人”的协议级别-您不能 强制执行 它(比现实生活中的要多;-)。单个前导下划线表示您不 应该
“从外部”访问它- 两个
前导下划线(不带尾随下划线)可以更加有力地传达信息……但最终,它仍然取决于社交网络会议达成共识:Python的自省是有力的,以至于你无法 手铐
在世界上其他程序员尊重您的意愿。

((顺便说一句,尽管这是一个秘密的秘密,但对于C ++却是如此:在大多数编译器中,狡猾的编码人员只需花#define private public一行简单#include.h代码就可以对您的“隐私”进行散列…!-) )