python3中property使用方法詳解
本文實例為大家分享了python3中的property使用方法,供大家參考,具體內(nèi)容如下
property屬性
定義
一個可以使實例方法用起來像實例屬性一樣的特殊關(guān)鍵字,可以對應(yīng)于某個方法,通過使用property屬性,能夠簡化調(diào)用者在獲取數(shù)據(jù)的流程(使代碼更加簡明)。
property屬性的定義和調(diào)用要注意以下幾點:
調(diào)用時,無需括號,加上就錯了;并且僅有一個self參數(shù)
實現(xiàn)property屬性的兩種方式
裝飾器
新式類中的屬性有三種訪問方式,并分別對應(yīng)了三個被
- @property對應(yīng)讀取
- @方法名.setter修改
- @方法名.deleter刪除屬性
class Goods:
def __init__(self):
self.age = 18
@property
def price(self): # 讀取
return self.age
# 方法名.setter
@price.setter # 設(shè)置,僅可接收除self外的一個參數(shù)
def price(self, value):
self.age = value
# 方法名.deleter
@price.deleter # 刪除
def price(self):
del self.age
# ############### 調(diào)用 ###############
obj = Goods() # 實例化對象
obj.age # 直接獲取 age屬性值
obj.age= 123 # 修改age的值
del obj.age # 刪除age屬性的值
類屬性
當使用類屬性的方式創(chuàng)建property屬性時,property()方法有四個參數(shù)
- 第一個參數(shù)是方法名,調(diào)用 對象.屬性 時自動觸發(fā)執(zhí)行方法
- 第二個參數(shù)是方法名,調(diào)用 對象.屬性 = XXX 時自動觸發(fā)執(zhí)行方法
- 第三個參數(shù)是方法名,調(diào)用 del 對象.屬性 時自動觸發(fā)執(zhí)行方法
- 第四個參數(shù)是字符串,調(diào)用 對象.屬性.doc ,此參數(shù)是該屬性的描述信息
class Goods(object):
def __init__(self):
self.price = 100 # 原價
self.discount = 0.8 # 折扣
def get_price(self):
# 實際價格 = 原價 * 折扣
new_price = self.price * self.discount
return new_price
def set_price(self, value):
self.price = value
def del_price(self):
del self.price
# 獲取 設(shè)置 刪除 描述文檔
PRICE = property(get_price, set_price, del_price, '價格屬性描述...')
# 使用此方式設(shè)置
obj = Goods()
obj.PRICE # 獲取商品價格
obj.PRICE = 200 # 修改商品原價
del obj.PRICE # 刪除商品原價
使用property取代getter和setter方法
使用@property裝飾器改進私有屬性的get和set方法
class Money(object):
def __init__(self):
self.__money = 0
# 使用裝飾器對money進行裝飾,那么會自動添加一個叫money的屬性,當調(diào)用獲取money的值時,調(diào)用裝飾的方法
@property
def money(self):
return self.__money
# 使用裝飾器對money進行裝飾,當對money設(shè)置值時,調(diào)用裝飾的方法
@money.setter
def money(self, value):
if isinstance(value, int):
self.__money = value
else:
print("error:不是整型數(shù)字")
a = Money()
a.money = 100
print(a.money)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python實戰(zhàn)之PyQt5實現(xiàn)漫畫臉
本文詳細講解了python實戰(zhàn)之PyQt5實現(xiàn)漫畫臉的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12
python編程使用協(xié)程并發(fā)的優(yōu)缺點
協(xié)程是一種用戶態(tài)的輕量級線程,又稱微線程。這篇文章主要介紹了python編程使用協(xié)程并發(fā)的優(yōu)缺點,感興趣的朋友跟隨小編一起看看吧2018-09-09

