Python之property的使用

2021-09-12 05:46:42 字數 1797 閱讀 9423

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