我们都是成年人
we’re all consenting adults here —- What is “pythonic”?
python中并没有真正意义上的私有成员,它提供了在成员前面添加双下划线的方法来模拟类似功能。具体来说:
- _xxx 表示模块级别的私有变量或函数
- __xxx 表示类的私有变量或函数
这被称为name nangling,将__membername替换为_classname__membername。
这样从语法上实现了私有成员不能用classinstance.__membername访问,但是任然可以用
classinstance._classname__membername访问。
|
|
这样做更重要的目的是防止父类的同名成员被派生类重写。
参考:
https://docs.python.org/2/tutorial/classes.html#private-variables-and-class-local-references
https://docs.python.org/3.7/tutorial/classes.html#private-variables
http://stackoverflow.com/questions/70528/why-are-pythons-private-methods-not-actually-private