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...