在python中改名

发布于 2021-01-29 17:24:30

考虑下面的程序。

 class A():
     class __B():
         def __c(self):
             pass
a = A()
dir(a)
['_A__B', '__doc__', '__module__']
dir(a._A__B)
['_B__c', '__doc__', '__module__']

 ^^^^^^^

为什么不是___B__c呢?为什么不3
_呢?这里的逻辑是什么?根据mangling的名字,它应该是_class并且class在这里__B。所以2 __s在哪里

关注者
0
被浏览
46
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    就在文档中(添加了重点):

    形式为__spam的任何标识符(至少两个前导下划线,至多一个下划线)在文本上被_classname__spam替换,其中classname是当前类名
    ,前导下划线被去除



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看