单下划线
具有前导下划线的类中的名称只是向其他程序员指示该属性或方法是私有的。但是,名称本身并没有什么特别之处。
_ single _ leading _低于分数:弱"内部使用"指示器。从M导入*不导入名称以下划线开头的对象。
双下划线(名称管理)
_ _垃圾邮件格式的任何标识符(至少两个前导下划线,最多一个尾随下划线)在文本上都替换为_classname__spam,其中类名是去掉了前导下划线的当前类名。这种处理是在不考虑标识符的语法位置的情况下完成的,因此它可以用于定义类私有的实例和类变量、方法、存储在全局变量中的变量,甚至存储在实例中的变量。在其他类的实例上专用于此类。
并在同一页面发出警告:
名称管理旨在为类提供一种定义"私有"实例变量和方法的简单方法,而不必担心由派生类定义的实例变量,或者由类外的代码处理实例变量。请注意,莽撞规则主要是为了避免事故;一个意志坚定的灵魂仍然有可能访问或修改一个被认为是私有的变量。
例
类MyClass():
.def __init__(self):
.='你好'
.=',世界!'
.
mc=MyClass()
打印
回溯(最近呼叫):
文件""中的第一行
AttributeError: myClass实例没有属性" _ _超级私有"
打印
,世界!
打印
{ ' _我的班级_ _超级私人' : '你好',' _半私人' : ',世界!'}