在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
代码就可以对您的“隐私”进行散列…!-) )