根据 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错了,还是我误解了什么?有没有 办法 将模块的功能定义为私有的?
原文由 olamundo 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Python 中,“隐私”取决于“同意成年人”的协议水平——你不能 强迫 它(就像你在现实生活中一样;-)。一个前导下划线意味着您不 应该“从外部”访问它 - 两个 前导下划线(没有尾随下划线)更加有力地传达信息……但最终,它仍然取决于社交约定和共识:Python 的自省功能足够强大,以至于你不能给世界上所有其他程序员 戴上手铐 来尊重你的意愿。
((顺便说一句,虽然这是一个保密的秘密,但对于 C++ 来说也是如此:对于大多数编译器,在 — 之前有一个简单的
#define private public
行#include
.h
文件狡猾的编码人员只需要对您的“隐私”进行散列…!-))