1. 私有屬性新增getter和setter方法
class money(object):
def __init__(self):
self.__money=100
def setmoney(self,value):
if isinstance(value,int):
self.__money=value
else:
print('error:不是整型數字')
def getmoney(self):
return self.__money
2. 使用property公升級getter和setter方法
class money(object):
def __init__(self):
self.__money=100
def setmoney(self,value):
if isinstance(value,int):
self.__money=value
else:
print('error:不是整型數字')
def getmoney(self):
return self.__money
num=property(getmoney,setmoney)
a=money()
print(a.getmoney())
a.num=10
print(a.num)
print(a.getmoney())
結果:
d:\anaconda\python.exe e:/pythonwork/黑馬/私有化.py
3. 使用property取代getter和setter方法
@property 成為屬性函式,可以對屬性賦值時做必要的檢查,並保證**的清晰短小,主要有2個作用:
1.將方法轉換為唯讀
2.重新實現⼀個屬性的設定和讀取方法,可做邊界判定
class money(object):
def __init__(self):
self.__money=100
@property
def money(self):
return self.__money
@money.setter
def money(self,value):
if isinstance(value,int):
self.__money=value
else:
print('error:不是整型數字')
a=money()
a.num=10
print(a.num)
d:\anaconda\python.exe e:/pythonwork/黑馬/私有化.py
Python高階之使用 property
在繫結屬性時,如果我們直接把屬性暴露出去,雖然寫起來很簡單,但是,沒辦法檢查引數,導致可以把成績隨便改 s student s.score 9999這顯然不合邏輯。為了限制score的範圍,可以通過乙個set score 方法來設定成績,再通過乙個get score 來獲取成績,這樣,在set sc...
python關鍵字之 property
學習 python 的時候,經常遇見 property 關鍵字,有時候讓我有點疑惑,所以寫下這篇部落格來記錄它。在繫結屬性時,如果我們直接把屬性暴露出去,雖然寫起來很簡單,但是,沒辦法檢查引數,導致可以隨便更改屬性 舉個例子 class celsius def init self,temperatu...
Python高階之「屬性(property)」詳解
python中有乙個被稱為屬性函式 property 的小概念,它可以做一些有用的事情。在這篇文章中,我們將看到如何能做以下幾點 讓我們假設我們有一些遺留 它們是由一些對python理解得不夠好的人寫的。如果你像我一樣,你之前已經看到過這類的 coding utf 8 author lenovo c...