参考:
python中_、__、xx(单下划线、双下划线等)的含义
Python中的下划线、双下划线
单下划线和双下划线在Python变量名和方法名中都有各自的含义。有些仅仅是作为约定,用于提示开发人员;而另一些则对Python解释器有特殊含义。
总的来说有一下几种情况:
- 前置单下划线:
_var - 后置单下划线:
var_ - 前置双下划线:
__var - 前后双下划线:
__var__ - 单下划线:
_
1. 前置单下划线:_var
"单下划线 " 开始的成员变量相当于私有变量,也叫做保护变量,意思是只有类实例和子类实例能访问到这些变量,需通过类提供的接口进行访问(可以定义有点像java中的getter、setter方法,借助方法访问,而不是直接对变量动刀子);不能用’from module import *'导入。其实,Python并没有真正的私有化支持,用下划线得到的是伪私有,也就是说如果你强行要用也是可以的,但不符合python的规范。我们应该尽量避免重新定义以下划线开头的变量。
2. 后置单下划线:var_
有时,某个变量最合适的名称已被Python语言中的关键字占用。因此,诸如class或def的名称不能用作Python中的变量名。在这种情况下,可以追加一个下划线来绕过命名冲突。
总之,用一个后置单下划线来避免与Python关键字的命名冲突是一个约定。
3. 前置双下划线:__var
双下划线前缀会让Python解释器重写属性名称,以避免子类中的命名冲突。
这也称为名称改写(name mangling),即解释器会更改变量的名称,以便在稍后扩展这个类时避免命名冲突。
4. 前后双下划线:__var__
系统定义名字,前后均有一个“双下划线” 代表python里特殊方法专用的标识,如 __init__()代表类的构造函数。类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如一个模块的__author__,__name__就是特殊变量,模块定义的文档注释(就是模块开头的字符串)也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名,以避免与将来Python语言的变化产生冲突。
5. 单下划线:_
按照习惯,有时候单个独立下划线是用作一个名字,来表示某个变量是临时的或无关紧要的。通常被称为丢弃变量
6. 小结

本文介绍了Python中单下划线、双下划线的使用规则和含义,包括前置单下划线用于表示保护变量,后置单下划线避免与关键字冲突,前置双下划线进行名称改写防止子类命名冲突,以及前后双下划线用于表示特殊方法。理解这些约定有助于编写更符合Python规范的代码。

3925

被折叠的 条评论
为什么被折叠?



