python中會出現單下劃線和雙下劃線的區別問題
>>> class myclass():
... def __init__(self):
... self.__superprivate = "hello"
... self._semiprivate = ", world!"
...>>> mc = myclass()
>>> print mc.__superprivate
traceback (most recent call last):
file "", line 1, in attributeerror: myclass instance has no attribute '__superprivate'
>>> print mc._semiprivate
, world!
>>> print mc.__dict__
_foo_:一種約定,python內部的名字,用來區別其他使用者自定義的命名,以防衝突,就是例如init(),del(),call()這些特殊方法
_foo:一種約定,用來指定變數私有.程式設計師用來指定私有變數的一種方式.不能用from module import * 匯入,其他方面和公有一樣訪問;
_foo:這個有真正的意義:解析器用_classname__foo來代替這個名字,以區別和其他類相同的命名,它無法直接像公有成員一樣隨便訪問,通過物件名.類名__***這樣的方式可以訪問.
詳情見:
或者:
Python中單下劃線和雙下劃線
python中存在一些特殊的方法,有些方法以雙下劃線 開頭和結尾,它們是python的魔法函式,比如 init 和 str 等等。不用要這種方式命名自己的變數或者函式。class a def init self,text self.text text def str self return self...
Python中單下劃線和雙下劃線
雙下劃線開頭和結尾 python中存在一些特殊的方法,有些方法以雙下劃線 開頭和結尾,它們是python的魔法函式,比如 init 和 str 等等。不用要這種方式命名自己的變數或者函式。classa def init self,text self.text text def str self re...
python中單下劃線 和雙下劃線(
函式使用單下劃線 開頭 使用單下劃線 開頭的函式 func不能被模組外部以 from module www.cppcns.comimport 形式匯入。但程式設計客棧可以用 from module import func形式單獨匯入。類屬性和類方法使用單下劃線 開頭 開頭為保護型別的屬性和方法,僅允...