对象名称前的单下划线和双下划线在 Python 中代表什么?
原文由 Ram Rachum 发布,翻译遵循 CC BY-SA 4.0 许可协议
对象名称前的单下划线和双下划线在 Python 中代表什么?
原文由 Ram Rachum 发布,翻译遵循 CC BY-SA 4.0 许可协议
_foo
:只是一个约定。程序员指示变量是私有的(无论这在 Python 中意味着什么)的一种方式。
__foo
:这个有实际意义。解释器将此名称替换为 _classname__foo
以确保该名称不会与另一个类中的类似名称重叠。
__foo__
:只是一个约定。 Python 系统使用不会与用户名冲突的名称的一种方式。
在 Python 世界中,没有其他形式的下划线有意义。此外,在这些约定中,类、变量、全局等之间没有区别。
原文由 Ned Batchelder 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.9k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
单下划线
在一个类中,带有前导下划线的名称向其他程序员表明该属性或方法打算在该类中使用。但是,隐私不会以任何方式 _强制执行_。对模块中的函数使用前导下划线表示不应从其他地方导入它。
来自 PEP-8 风格指南:
双下划线(名称修饰)
来自 Python 文档:
来自同一页面的警告:
例子