使用property升級和取代getter和setter方法
阿新 • • 發佈:2018-12-12
使用property升級getter和setter方法
class Money(object): def __init__(self): self.__money = 0 def getMoney(self): return self.__money def setMoney(self, value): if isinstance(value, int): self.__money = value else: print("error:不是整型數字") money = property(getMoney, setMoney)
isinstance(value, int):判斷value是不是int型別
執行結果
In [1]: from get_set import Money
In [2]:
In [2]: a = Money()
In [3]:
In [3]: a.money
Out[3]: 0
In [4]: a.money = 100
In [5]: a.money
Out[5]: 100
In [6]: a.getMoney()
Out[6]: 100
使用property取代getter和setter方法
@property成為屬性函式,可以對屬性賦值時做必要的檢查,並保證程式碼的清晰短小,主要有2個作用
-
將方法轉換為只讀
-
重新實現一個屬性的設定和讀取方法,可做邊界判定
class Money(object): def __init__(self): self.__money = 0 @property def money(self): return self.__money @money.setter def money(self, value): if isinstance(value, int): self.__money = value else: print("error:不是整型數字")
執行結果
In [3]: a = Money()
In [4]:
In [4]:
In [4]: a.money
Out[4]: 0
In [5]: a.money = 100
In [6]: a.money
Out[6]: 100