1._的含義
在python的類中,沒有真正的私有化,不管是方法還是屬性,為了編程的需要,約定加了下划線 _ 的屬性和方法不屬於API,不應該在類的外面訪問,也不會被from M import * 導入。下面的代碼演示加了_ 的方法,以及在類外面對其的可訪問性。
含_實際可以調用,只是不推薦
class A: def _test(self): print("a") a = A()
#不推薦使用,但是可以使用 a._test()
2.__的含義
python中的__和一項稱為name mangling的技術有關,name mangling (又叫name decoration命名修飾).在很多現代編程語言中,這一技術用來解決需要唯一名稱而引起的問題,比如命名沖突/重
在類A中,__method方法其實由於name mangling技術的原因,變成了_A__method,所以在A中method方法返回的是_A__method,B作為A的子類,只重寫了__method方法,並沒有重寫method方法,所以調用B中的method方法時,調用的還是_A__method方法
B作子類,實際繼承的是_A__method方法,重寫新的__method方法不會改變_A__method方法,只會創造_B__method