[问题][python 实践] 类内函数名 双下划线开头,触发函数名改写
问题:
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'
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步