问题:
1 class A(object): 2 def __run(self): 3 print('A') 4 5 def exec(self): 6 self.__run() 7 print(dir(self)) 8 9 10 class B(A): 11 def __run(self): 12 print('B') 13 14 15 b = B() 16 b.exec()
为什么输出 'A' 呢?
原因:
前置双下划线__var
:在类环境中使用时会触发名称改写
python解释器将 类A中的 __run 自动修改为了 _A__run,类B中的 __run 自动修改为了 _B__run,
故:执行exec时,实际执行的是 _A__run,输出了 'A'