python _、__和__xx__的區別

"_"單下劃線

Python中不存在真正的私有方法。爲了實現相似於c++中私有方法,能夠在類的方法或屬性前加一個「_」單下劃線,意味着該方法或屬性不該該去調用,它並不屬於API。python

 

"__"雙下劃線

以"__"兩個下劃線開始的方法時,這意味着這個方法不能被重寫,它只容許在該類的內部中使用c++

讓咱們來看一個例子:code

class A(object): 
    def __method(self): 
        print "I'm a method in A" 
    def method(self): 
        self.__method() a = A() a.method()

輸出是這樣的:blog

$ python example.py 
I'm a method in A

很好,出現了預計的結果。class

咱們給A添加一個子類,並從新實現一個__method:object

class B(A): 
    def __method(self): 
        print "I'm a method in B" 

b = B() 
b.method()

如今,結果是這樣的:
方法

$ python example.py
I'm a method in A

結論

  • 使用_one_underline來表示該方法或屬性是私有的,不屬於API;
  • 當建立一個用於python調用或一些特殊狀況時,使用__two_underline__;
  • 使用__just_to_underlines,來避免子類的重寫!
相關文章
相關標籤/搜索