本文转载自 Python 单下划线开头、双下划线开头

好文章,感觉写得不错

单下划线开头的变量:半私有变量

以此类名称命名的对象,需要分为两种情况:

类外:类外的半私有对象、私有对象,功能一致,均是在本模块中可以正常使用,但是不能被直接导入并调用。如果要在模块外使用,那么需要导入本模块,然后使用(模块名.变量名)进行调用。

类中:

类中的半私有对象,仅仅是概念上的私有,默认不要在类外进行调用

实际上,在类外,均可以使用(实例名.变量名/类名.变量名)进行调用。

双下划线开头的变量:私有变量

也需要分为两种情况:

类外:

与半私有对象相同

类中:

类中的私有对象,在类外均不可直接调用,可以理解为真私有,但是,Python 中没有完全私有的对象,此种对象也是可以在类外进行调用的,这里涉及到一个概念:矫直。

img

以双下划线开头,双下划线结尾的对象:Python 内置属性名或者魔法方法名

是 Python 自己实现的属性和方法,一般不允许自定义类似此种命名方式的属性或者方法。