類的建構函式 私有屬性,私有屬性不 絕對 私有

2021-05-22 21:50:48 字數 892 閱讀 9158

建構函式及其他:

class a:

def __init__(self):

self._hour = 0

self._minute = 0

__init__為類的建構函式,每次建立類物件時,都會執行建構函式。建構函式(__init__)會初始化類物件屬性,並且返回none。 python類還可以定義其他的特殊方法,這些方法之前、之後都會有雙下劃線(__)。

建構函式用單一的前置下劃線(_)來建立屬性。屬性名以單下劃線開頭。雖然在python語法中沒有特殊的含義,但單下劃線是python程式設計師使用類是 約定的使用的符號,表明程式設計師不希望類的使用者直接訪問屬性。如果程式要求訪問屬性,程式設計師會提供其他途徑。

私有屬性:

python中,物件的屬性是肯定能被訪問的——沒有辦法阻止其他**訪問屬性。但python也提供了特殊的機制來防止任意的訪問資料。

這種特殊機制叫做「名稱重整」,使用方法則為:為屬性名附加雙下劃線字首(__)。來個例子?:

在類a的建構函式(__init__)中這樣寫到:

class a:

def __init__(self):

self.__hour = 0

b=a( )

現在,如果你想採取常用的方法「print b.__hour」,那麼你將得到的反饋資訊不是理想的「0」,而是一則異常。我們換個方式來試 試:「print b._a__hour」

如你所願了嗎?

當建構函式的屬性名附加雙下劃線字首(__)後,python就會建立「_類名__屬性名」這樣的屬性,而不是名為「__屬性名」的屬性。

值得說明的是,經過「名稱重整」後的屬性依然是可以通過「物件._類名__屬性名」的方法訪問、甚至修改(如執行「b._a__hour = 5」是可以通過的),但這樣的使用方式將違背作者的資料封裝意圖。

類的私有屬性

前面帶有兩下劃線代表是私有屬性,能在類的內部呼叫,不能在類的外部呼叫,示例 class money self 50 all 300 def gives self print 給錢 self.self def givea self print 給錢 self.all a money a.gives a...

類屬性類方法,私有屬性私有方法

類屬性類方法 類屬性 使用賦值語句在class關鍵字下定義 類方法 在類內部可以直接訪問雷屬性或者其它類方法 class student objict count 0 definit self,name self.name name student.count 1 classmethod def s...

python類私有屬性

python中沒有private關鍵字,想要建立乙個類私有的變數需要通過命名規則來實現 在變數名之前加兩個下劃線 name,則在類外部就不能直接通過例項.name訪問,具體原理python編譯器將其命名修改為了 類名 name,通過其實例項.類名 name還是可以訪問 class test obje...