Python中單下劃線和雙下劃線

2021-10-25 09:29:51 字數 1836 閱讀 9704

雙下劃線開頭和結尾

python中存在一些特殊的方法,有些方法以雙下劃線__開頭和結尾,它們是python的魔法函式,比如__init__()__str__等等。不用要這種方式命名自己的變數或者函式。

classa:

def__init__

(self, text)

: self.text = text

def__str__

(self)

:return self.text

a = a(

"test"

)print

(a)# 輸出test

雙下劃線開頭在前面加上__,表示它是私有成員,我們不能直接訪問。比如__***如果要訪問得通過_class__***的方式進行訪問。雖然不能防止修改私有屬性,但可以有效降低有意或者無意的修改。

classa:

def__init__

(self)

: self.__name =

"text"

a = a(

)print

(a.__name)

# 報錯

print

(a._a__name)

# 輸出text

從圖中可以看到雙下劃線開頭的變數,python自動在前面加上了_class的字首,所以我們訪問時也要加上相應的字首才能正常訪問

單下劃線開頭

_***:一種約定,用來指定變數私有。程式設計師用來指定私有變數的一種方式。不能用from module import *匯入,其他方面和公有一樣訪問。

檔案內容:

'''

'''# a.py

classa:

def__init__

(self)

: self.text =

"a"class_b:

def__init__

(self)

: self.text = "b

# test.py

from a import

*a = a(

)print

(a.__dict__)

b = _b(

)print

(b.__dict__)

執行結果:

可以看到我們匯入了a.py中所有的類,但其實_b並沒有被匯入,但是我們可以通過別的方式訪問這個類,修改我們的test.py檔案為以下內容。

'''

'''import a

a = a.a(

)print

(a.__dict__)

b = a._b(

)print

(b.__dict__)

除了不能通過from module import *這種方式匯入外,跟公有類並沒有差別

Python中單下劃線和雙下劃線

python中存在一些特殊的方法,有些方法以雙下劃線 開頭和結尾,它們是python的魔法函式,比如 init 和 str 等等。不用要這種方式命名自己的變數或者函式。class a def init self,text self.text text def str self return self...

python中單下劃線 和雙下劃線(

函式使用單下劃線 開頭 使用單下劃線 開頭的函式 func不能被模組外部以 from module www.cppcns.comimport 形式匯入。但程式設計客棧可以用 from module import func形式單獨匯入。類屬性和類方法使用單下劃線 開頭 開頭為保護型別的屬性和方法,僅允...

Python單下劃線和雙下劃線

python 用下劃線作為變數字首和字尾指定特殊變數。不能用 from moduleimport 匯入 系統定義名字 類中的私有變數名 核心風格 避免用下劃線作為變數名的開始。因為下劃線對直譯器有特殊的意義,而且是內建識別符號所使用的符號,我們建議程式設計師避免用下 劃線作為變數名的開始。一般來講,...