- _xx:前置單下划線,私有化屬性或方法,一般來講,變量名_xx被看作是“私有 的”,在模塊或類外不可以使用。當變量是私有的時候,用_xx 來表示變量是很好的習慣。類對象和子類可以訪問,這並不能完全做到真正的私有,只是約定俗成的而已,這樣寫表示不希望這個變量在外部被直接調用
- __xx:前置雙下划線,私有化屬性或方法,無法在外部直接訪問(名字重整所以訪問不到,只能是允許這個類本身進行訪問了。連子類也不可以)
- __xx__:前后雙下划線,系統定義名字(這就是在python中強大的魔法方法),因為變量名__xxx__對Python 來說有特殊含義,對於普通的變量應當避免這種命名風格。
- xx_:后置單下划線,用於避免與Python關鍵詞的沖突
- 如以下例子所示,我在test類中定義了x,_x和 __x三個屬性,並創建了test的類對象t,對這三個屬性進行訪問,__x不能被訪問到
-
1 class test(object): 2 def __init__(self): 3 self.x = 10 4 self._x = 20 5 self.__x = 30 6 t = test() 7 print(t.x) # 10 8 print(t._x) # 20 9 # print(t.__x) # AttributeError: 'test' object has no attribute '__x'