Python屬性私有化詳解
前言
在做程序的過(guò)程中,有時(shí)候程序猿不想讓外人動(dòng)一些值,這個(gè)時(shí)候,就可以考慮把一些變量進(jìn)行私有化
__屬性:就是將屬性私有化,訪問(wèn)范圍僅僅限于類(lèi)中。

私有化屬性
私有化屬性只需要以雙下劃線開(kāi)頭,聲明該屬性為私有屬性即可,聲明之后就不能在類(lèi)外部使用或直接訪問(wèn)。
class Student:
__age = 10
a = Student()
print(a.__age)

私有化屬性的有三個(gè)特性:
- 不能在類(lèi)外面訪問(wèn)
- 可以在類(lèi)里面訪問(wèn),修改
- 子類(lèi)不能繼承私有化屬性
set和get
set是為了賦值,給私有化屬性賦值。
get是為了取值,把私有化屬性的值取出來(lái)。
class Student:
__age = 10
def __init__(self ,age):
self.age = age
# 定義公有的set方法和get方法
def set_age(self ,age):
self.__age = age
def get_age(self):
return self.__age
a = Student('100')
print(a.get_age())
a.set_age(1000)
print(a.get_age())

私有化好處:
隱藏屬性不被外界隨意修改(在set里面加一些判斷,防止被隨意修改)
也可以修改,通過(guò)函數(shù)完成
def setXXX(self,xxx):
篩選賦值內(nèi)容
if 條件:
賦值
else:
不賦值
如果想獲取具體的某一個(gè)屬性,使用get函數(shù)來(lái)完成
def getXXX(self):
return 要返回的某一個(gè)屬性
通過(guò)set和get函數(shù)即可完成對(duì)私有化屬性的一些操作。
裝飾器@property
class Stu:
def __init__(self,name,age):
self.name = name
self.__age = age
def set_age(self,age):
if age > 0 and age < 100:
self.__age = age
else:
print('不在規(guī)定范圍內(nèi)')
def get_age(self):
return self.__age
def __str__(self):
return 'name: {} \nage:{}'.format(self.name,self.__age)
a = Stu('lisan',20)
a.name = 'wangwu'
print(a.name)
a.set_age(30)
print(a.get_age())
當(dāng)我想訪問(wèn)私有屬性的時(shí)候,只能通過(guò)get和set函數(shù)來(lái)訪問(wèn)。
通過(guò)裝飾器,就可以讓私有屬性當(dāng)作屬性一樣去調(diào)用。
class Stu:
def __init__(self,name,age):
self.name = name
self.__age = age
@property
def age(self):
return self.__age
@age.setter
def age(self,age):
self.__age = age
def __str__(self):
return 'name: {} \nage:{}'.format(self.name,self.__age)
a = Stu('lisan',20)
a.age = 90
print(a)
a.age = 40
print(a)

到此這篇關(guān)于Python屬性私有化詳解的文章就介紹到這了,更多相關(guān)Python私有化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)按任意鍵繼續(xù)執(zhí)行程序
本文給大家分享的是如何使用Python腳本實(shí)現(xiàn)按任意鍵繼續(xù)執(zhí)行程序的代碼,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下2016-12-12
Python實(shí)現(xiàn)序列化及csv文件讀取
這篇文章主要介紹了Python實(shí)現(xiàn)序列化及csv文件讀取,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
Python打包文件執(zhí)行報(bào)錯(cuò):ModuleNotFoundError: No module 
這篇文章給大家介紹了Python打包文件執(zhí)行報(bào)錯(cuò):ModuleNotFoundError: No module named ‘pymssql‘的解決方法,如果有遇到相同問(wèn)題的朋友可以參考閱讀一下本文2023-10-10
Python表格處理模塊xlrd在Anaconda中的安裝方法
本文介紹在Anaconda環(huán)境下,安裝Python讀取.xls格式表格文件的庫(kù)xlrd的方法,xlrd是一個(gè)用于讀取Excel文件的Python庫(kù),本文介紹了xlrd庫(kù)的一些主要特點(diǎn)和功能,感興趣的朋友一起看看吧2024-04-04
python開(kāi)發(fā)實(shí)例之Python的Twisted框架中Deferred對(duì)象的詳細(xì)用法與實(shí)例
這篇文章主要介紹了python開(kāi)發(fā)實(shí)例之Python的Twisted框架中Deferred對(duì)象的詳細(xì)用法與實(shí)例,需要的朋友可以參考下2020-03-03
Django數(shù)據(jù)庫(kù)遷移報(bào)錯(cuò)InconsistentMigrationHistory
最近在使用Django,學(xué)習(xí)了一下Django數(shù)據(jù)庫(kù)遷移,在執(zhí)行遷移命令時(shí),突然報(bào)錯(cuò),本文就總結(jié)了一下原因,感興趣的小伙伴們可以參考一下2021-05-05

