1._的含义
在python的类中,没有真正的私有化,不管是方法还是属性,为了编程的需要,约定加了下划线 _ 的属性和方法不属于API,不应该在类的外面访问,也不会被from M import * 导入。下面的代码演示加了_ 的方法,以及在类外面对其的可访问性。
含_实际可以调用,只是不推荐
class A: def _test(self): print("a") a = A()
#不推荐使用,但是可以使用 a._test()
2.__的含义
python中的__和一项称为name mangling的技术有关,name mangling (又叫name decoration命名修饰).在很多现代编程语言中,这一技术用来解决需要唯一名称而引起的问题,比如命名冲突/重
在类A中,__method方法其实由于name mangling技术的原因,变成了_A__method,所以在A中method方法返回的是_A__method,B作为A的子类,只重写了__method方法,并没有重写method方法,所以调用B中的method方法时,调用的还是_A__method方法
B作子类,实际继承的是_A__method方法,重写新的__method方法不会改变_A__method方法,只会创造_B__method