私有化
xx
:公有变量
_x
:单前置下划线,私有化属性或方法,from somemodule import * 禁止导入,类对象与子类可以访问
__xx__
:双前后下划线,用户名字空间的魔法对象或属性。例如:__init__
,不要自己命名这样的函数或方法。
xx_```:单后置下划线,用于避免与python关键字重复。
在python中,无论是属性还是方法只要有前置下划线,就是私有的
当我们调用模块时,如果以`from XXX(模块名) import * `时,该模块的私有方法与私有属性不会被调用,如果调用会报错。
但是,当我们以`import XXX(模块名) ` 调用时,该模块的私有方法可以使用。
这是因为,后者是将模块整体引用,所以会导入私有的属性及方法。
**私有化的实质**,是通过name mangling (名字重整(目的是以防子类意外重写基类的方法或者属性)如:`_类名__私有属性或方法`就可以强制访问private了)
【注】在这里指出,在没必要的时候不要访问私有方法或属性,并且不同的编译器会使用不同的名称,不一定是`_类名__私有属性或方法`