python單下劃線和雙下線的區別

一、簡單說明

在學習Python的時候,會不理解爲什麼在方法(method)前面會加好幾個下劃線,有時甚至兩邊都會加。在C++的類中會定義中一些方法或屬性會被定義成public、protected、private,而在Python中不是通過關鍵字進行定義,而是通過下劃線和雙下劃線進行定義,同樣實現具有 private 和 protected 類似的訪問權限作用,下面我們具體分析。

Python主要存在四種命名:
(1)object #公用方法
(2)__object__ #內建方法,用戶不要這樣定義
(3)__object #全私有,全保護(private)
(4)_object #半保護(protected)

核心風格:避免用下劃線作爲變量名的開始。
因爲下劃線對解釋器有特殊的意義,而且是內建標識符所使用的符號,如類的gouzao

二、舉例說明

1、單下劃線開頭開頭(protected變量)

單下劃線開頭的變量
“單下劃線”開始的變量叫做保護變量,意思是只有類對象和子類對象能訪問到這些變量

2、雙下劃線開頭(private變量)

雙下劃線開頭的變量
“雙下劃線”開始的變量叫做私有變量,意思是只有類本身能夠訪問達到這些變量,連子類對象也不能訪問。

但是類的對象或者類的子對象想訪問這些私有變量也是可以的,需要改變訪問的的方式(但是一般不主張)
對象訪問私有方法或屬性:

對象名._類名__PrivateMethod()

class Foo():
  def __init__():
    ...

  def public_method():
    print 'This is public method'

  def __fullprivate_method():
    print 'This is fullprivate_method'

  def _halfprivate_method():
    print 'This is halfprivate_method'

  f = Foo()
  f.public_method() # OK
  f.__fullprivate_method() # Error occur
  f._halfprivate_method() # OK
  f._Foo__fullprivate_method() # OK 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章