python裡下劃線 和

2021-10-06 20:53:43 字數 1884 閱讀 1719

雙下劃線

今天閱讀**時碰到了命令列解析的類,對大量的下劃線感到絕望,系統學習

單下劃線可作為變數使用,此時它佔了引數的位置卻無法被呼叫,適用於必須要輸出或輸入的無用引數

是程式設計師約定的指定私有變數和方法,指定的成員、屬性只在類內可用,(其實可以被呼叫)

但在引入類的時候,如from module import *時,本來所有子函式都該被呼叫,但是命名為「_xx」的函式和變數不會被引入

如想定義乙個class、def變數,可以寫作class_

這個和單下劃線不同,它所命名的成員確定無法被呼叫,它有以下幾個屬性

1)該成員無法被外部以原來的名字直接呼叫,但可以通過"類名._類名__xx「被外部呼叫,內部以」self.__xx"引用

class test():

def __method(self):

return 42

def call_it(self):

return self.__method

print(test().call_it())

print(test().__method())

結果

42

traceback (most recent call last)

: file "d:/test.py"

, line 9,in

print

(test(

).__method())

attributeerror:

'test'

object has no attribute '__method'

print(test()._test__method())
結果

42
2)類內部,未通過self定義的"__xx",可以按照 「_類名__xx」 在外部引用修改,在類內引用名可以為 「__xx」 或 「_類名__xx」 。這一點注意和self定義的"__xx"區分

_test__method=5

class test():

def __init__(self):

self.__method=6

def call_it(self):

return self.__method

def call_that(self):

return __method

def call_what(self):

return _test__method

print(test()._test__method)

print(test().call_it())

print(test().call_that())

print(test().call_what())

結果

665

5

python內部約定的特殊命名,官方建議不要使用它們當作變數名

__init__,__add__

另外,「__xx__」這樣的變數是可以不經「_類名__xx__」的修飾,直接被外部呼叫的,如

class test():

def __init__(self):

self.__me__=6

print(test().__me__)

結果

6

Python單下劃線和雙下劃線

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

Python 單下劃線和雙下劃線解析

單下劃線 單下劃線開始的成員變數叫做保護變數,意思是只有類物件和子類物件自己能訪問到這些變數 雙下劃線 開始的是私有成員,意思是只有類物件自己能訪問,連子類物件也不能訪問到這個資料。如下列所示 以單下劃線開頭 foo 的代表不能直接訪問的類屬性,需通過類提供的介面進行訪問,不能用 from impo...

Python中單下劃線和雙下劃線

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