在类中,带下划线的名称基本上是向其他程序员表明该属性或方法旨在私有。
对于半私有变量,建议使用单下划线,对于完全私有变量,建议使用双下划线。
引用PEP-8-
_single_leading_underscore:“内部使用”指标较弱。例如,从M import *不会导入名称以下划线开头的对象。
以下代码显示双下划线前缀和单下划线前缀之间的区别
class MyClass(): def __init__(self): self.__fullrprivate = "World" self._semiprivate = "Hello" mc = MyClass()print mc._semiprivate print mc.__fullprivate
输出结果
Traceback (most recent call last): Hello File "C:/Users/nhooo1/~_1.py", line 8, in <module> print mc.__fullprivate AttributeError: MyClass instance has no attribute '__fullprivate'