Python中屬性的私有化

2021-10-16 12:38:07 字數 1899 閱讀 3867

1. 引入

在python物件導向程式設計過程中,修改類屬性都是直接通過類名修改的,如果有些重要的屬性不希望他人任意修改怎麼辦呢?

這就要用到屬性私有化功能。

2. 概念

保護屬性安全,使其不能隨意修改,將屬性定義為私有屬性,新增乙個可呼叫的方法去使用。

3. 語法

兩個下劃線開頭,宣告該屬性為私有,不能在類的外部被使用或直接訪問;

示例:

class person:

__hobby='跳舞'#定義乙個私有屬性,屬性名字前面加兩個下劃線

3. 使用場景

把特定的乙個屬性藏起來,不讓外部直接呼叫;

保護屬性,不讓屬性的值隨意的改變

保護屬性,不讓派生類【子類】去繼承

4. 例項

屬性私有化之前的使用

class person:

hobby = '跳舞'

def __init__(self):

self.name='李四' #定義例項屬性

self.age=30

def __str__(self):

return '{}{}歲了,喜歡{}'.format(self.name, self.age, person.hobby)

xl=person()

print(xl)

print(xl.name)

'''輸出結果:李四30歲了,喜歡跳舞

李四'''

屬性私有化之後的使用

class person:

hobby = '跳舞'

def __init__(self):

self.__name='李四'#例項屬性私有化,不能在外部直接使用

self.age=30

xl=person()

print(xl.__name) #在外部訪問

'''報錯

'''

class person:

__hobby = '跳舞'

def __init__(self):

self.__name='李四' #定義例項屬性

self.age=30

def __str__(self):

'''私有屬性內部使用

:return: 私有屬性

'''return '{}{}歲了,喜歡{}'.format(self.__name, self.age, person.__hobby)

xl=person()

print(xl)

'''輸出結果:李四30歲了,喜歡跳舞

'''

class person:

__hobby = '跳舞'

def __init__(self):

self.__name='李四' #定義例項屬性

self.age=30

class student(person): #student子類繼承父類person

def printinfo(self):

xl=person()

print(xl)

stu=student()

# print(stu.__name) #若這一句不注釋掉也會報錯

print(stu.age)

'''輸出結果:30

'''

所有私有化後的屬性不能被外部直接呼叫;不讓屬性的值隨意的改變;不讓派生類(子類)去繼承。

後續有時間繼續補充…

python 私有化屬性

python 沒有和其他程式語言一樣的定義共有屬性和私有屬性的關鍵字,實現屬性私有化和屬性保護,都是使用 格式進行的偽效果。私有化使用場景 保護屬性 比如銀行存款等,存款直接外放非常危險,就可以私有化,然後通過類提供的方法增加刪減鉛筆的金額,對存款進行保護。內部過濾 過濾一下不符合屬性的資料,資料不...

python私有化方法 Python 私有化

python中的私有變數和私有方法仍然是可以訪問的 訪問方法如下 私有變數 例項.類名 變數名 私有方法 例項.類名 方法名 python並沒有真正的私有化支援,但可用下劃線得到偽私有。盡量避免定義以下劃線開頭的變數 1 單下劃線 開始的成員變數叫做保護變數,意思是只有類例項和子類例項能訪問到這些變...

Python特性 屬性以及私有化

特性是物件內部的變數 物件的狀態由它的特性來描述,物件的方法可以改變它的特性 可以直接從物件外部訪問特性 定義 class person name yoda 類中特性 defget name self 通過訪問器方法訪問特性 return self.name defset name self,val...