考虑以下计划。
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
_
s。这里的逻辑是什么?
根据名称修改,它应该是_class
,class
这里是__B
。那么2
__
s
答案 0 :(得分:4)
它正好在the docs(强调添加):
表单__spam的任何标识符(至少两个前导下划线,最多一个尾随下划线)在文本上替换为_classname__spam,其中classname是当前类名,带有前导下划线 < / p>