1、单下划线(_)
1)在交互式解释器中,单下划线“_”代表的是上一条执行语句的结果。
2)单下划线“_”还可以作为特殊的临时变量,不需要给一个变量命名的时候就可以用这个。
2、名称前加单下划线(如:_name)
当在属性和方法前面加上单下划线“_”,用于指定属性和方法是“私有”的。不可被 import 导入使用。特殊情况是:除非模块或包中的“__all__”列表显式地包含了它们。
(__all__是一个字符串列表,不管是普通的还是单下划线的属性、方法和类,都将导出来,使用其他不在这个字符列表上的属性、方法和类,都会报未定义的错误。)
3、名称前加双下划线(如:__name)
要访问以双下划线开头的方法和属性,只能以“对象._类名__方法(属性)”的形式。类前面是单下划线,类名后面是双下划线,然后再加上方法或者属性。
(但是并不建议调用,因为这是Python内部进行调用的形式。)
这个设计的实际目的是为了避免父类的方法被子类轻易地覆盖。
4、名称前后加双下划线(如:__ init __)
在Python类中,我们可以常常看到类似于“__ init ___”的方法,这表示在Python内部调用的方法,一般不建议在程序中调用。比如,当调用len()方法时,实际上调用了 Python中内部的 ___len ___方法,虽然不建议调用这种以双下划线开头以及结尾的方法,但是可以对这些方法进行重写。