务必注意:python仅对双下划线【__】在class中为私有变量,而单划线【_】在class内部和正常变量完全一样,可正常继承,外部可正常访问
python编程规范--单下划线与双下划线的区别(保护和私有):https://blog.csdn.net/u011630575/article/details/53718875
参考:https://www.cnblogs.com/cccy0/p/9040192.html
如何强制调用父类私有属性方法【非__双下划线的公开方法继承是正常的,而__双下划线的方法继承之后会修改名字】
如果父类的方法是私有方法,如 def __heshui(self) 这样的话再去调用就提示没有这个方法,其实编译器是把这个方法的名字改成了 _Animal__heshui(),如果强制调用,可以这样【继承的话不建议设置私有方法,使用公开方法继承即可,Python没有绝对的私有】
class Animal:
def __heshui(self):
print('动物正在喝水')
class Cat(Animal):
def heshui(self):
super()._Animal__heshui()
cat = Cat()
cat.heshui()
>>>动物正在喝水