python类的私有成员名称分割转换

Private name mangling 私有名割断

即在初步编译阶段,对以两个以及上个下划线开头,且未以两个下划线结尾的属性或方法,解释器会自动插入一个下划线和和其类名,例如在一个名为‘Sun’的类中定义了一个属性‘__size’,则解释器会自动将其转换为‘_Sun__size’,如果超过255个字符,可能进行截取。这也就是python实现私有成员变量不得访问的机制了。

从外部访问类的私有成员

  • 利用上面介绍的转换特性,我们可以使用转换后后的名字来访问类的私有成员:
>>> class Sun:
...     __size = 15
...
>>> Sun.__size
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: type object 'Sun' has no attribute '__size'
>>> Sun._Sun__size
15
posted on 2021-09-28 00:14  大李不理  阅读(73)  评论(0)    收藏  举报