2016-02-25 74 views
2

請考慮以下程序。python中的名稱篡改

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.What是這裏的邏輯是什麼? 根據名字改編,它應該是_classclass這裏是__B。所以在哪裏2__小號

回答

4

它是正確的,在the docs(強調):

形式__spam的任何標識(至少兩個主要下劃線,最多一個尾部下劃線)用_classname__spam進行文本替換,其中classname是當前類名稱,並帶有下劃線(s)剝離

+0

很棒!!!!!!!!!!!清理的東西!!!!!!!! thanx很多:) – vks

+0

是否知道如果有什麼特別的原因,爲什麼python做它或它的只是語言語法就是這樣設置的 – vks