在Python中,对象名称前加单下划线(_)和双下划线(__)有不同的含义:
-
单下划线(_):
- 作用:它通常用来指示变量或函数是“内部使用”的,或者说是“私有”的,虽然这只是一种约定,并不会真正阻止外部访问。
- 约定:这是一个程序员之间的约定,意味着这样的属性或方法主要供类内部使用,不应该在类的外部被使用。Python并没有强制这样的属性或方法不能在类的外面访问。
-
双下划线(__):
- 作用:在Python中,以双下划线开头的属性或方法表示名称改写(name mangling)以避免在子类中被覆盖。
- 名称改写:如果你在一个类中定义了一个以双下划线开头的属性,Python解释器会把这个属性的名称改写为
_ClassName__AttributeName,这使得它在子类中更难被意外访问和修改。 - 目的:主要用于在类中封装私有变量,防止在继承中由于变量名相同而造成覆盖。