python 类属性中的下划线:隐而不露
在 Python 中,我们经常看到类属性前后带有一个或两个下划线,但它们到底有什么意义呢?
单下划线 (_A)
单下划线表示该属性是受保护的,即只有该类及其子类才能访问。然而,在实践中,单下划线实际上只是一种命名约定,它并没有强制访问限制。
立即学习“Python免费学习笔记(深入)”;
双下划线 (__B)
双下划线则不同了。它除了具有保护属性的作用外,还引入了一种称为名称混淆的新特性。编译器会自动将属性名替换为一个以 _类__ 开头的名称。
以题中的例子为例,__B 属性会被编译器替换为 _A__B。虽然这种混淆看似增加了访问难度,但实际上你仍然可以在外部通过 _A__B 直接访问它。
因此,我们可以得出结论,Python 中虽然没有真正的属性可见性修饰符,但可以通过下划线来规定访问约定。单下划线表示受保护,双下划线表示隐式保护。