Python 類,property屬性(簡(jiǎn)化屬性的操作),@property,property()用法示例
本文實(shí)例講述了Python 類,property屬性(簡(jiǎn)化屬性的操作),@property,property()用法。分享給大家供大家參考,具體如下:
property屬性的創(chuàng)建方式有兩種:1.@property裝飾器方式 2.類屬性方式 ( 類屬性=property() )
property屬性可以簡(jiǎn)化實(shí)例對(duì)象對(duì)屬性的操作(獲取、設(shè)置),可以對(duì)屬性做類型校驗(yàn)和預(yù)處理等。
裝飾器方式:
demo.py(@property,獲取屬性值,舊式類與新式類都有的方式):
class Goods: @property # 只能傳遞self參數(shù)。 必須返回一個(gè)值 def size(self): return 100 # 必須返回一個(gè)值 obj = Goods() result = obj.size # 調(diào)用屬性(沒有用小括號(hào),用屬性的方式調(diào)用函數(shù)) print(result) # property屬性一般對(duì)屬性值做一些預(yù)處理或格式化處理等,可以簡(jiǎn)化屬性的獲取。
運(yùn)行結(jié)果:
100
demo.py(@xxx.setter,@xxx.deleter,設(shè)置屬性值、刪除屬性,新式類支持的方式):
class Goods(object): def __init__(self): # 原價(jià) self.original_price = 100 # 折扣 self.discount = 0.8 @property # 方式一 獲取屬性值 (新式類和舊式類都支持該方式) def price(self): # 實(shí)際價(jià)格 = 原價(jià) * 折扣 new_price = self.original_price * self.discount return new_price @price.setter # 方式二 設(shè)置屬性值 (舊式類不支持,需要傳兩個(gè)參數(shù)) def price(self, value): self.original_price = value @price.deleter # 方式三 刪除屬性 (舊式類不支持) def price(self): del self.original_price obj = Goods() obj.price # 獲取商品價(jià)格 (自動(dòng)調(diào)用@property修飾的函數(shù)) obj.price = 200 # 修改商品原價(jià) (自動(dòng)調(diào)用@price.setter修飾的函數(shù),并將200傳給函數(shù)) del obj.price # 刪除商品原價(jià) (自動(dòng)調(diào)用@price.deleter修飾的函數(shù))
類屬性方式:
demo.py(類屬性創(chuàng)建property屬性,舊式類與新式類都支持):
class Goods(object): def __init__(self): # 原價(jià) self.original_price = 100 # 折扣 self.discount = 0.8 def get_price(self): # 實(shí)際價(jià)格 = 原價(jià) * 折扣 new_price = self.original_price * self.discount return new_price def set_price(self, value): self.original_price = value def del_price(self): del self.original_price # 類屬性。 property(方法名1,方法名2,方法名3,"屬性描述信息") PRICE = property(get_price, set_price, del_price, "屬性描述信息...") obj = Goods() obj.PRICE # 獲取商品價(jià)格 自動(dòng)調(diào)用propert()函數(shù)第一個(gè)參數(shù)指定的方法。 obj.PRICE = 200 # 設(shè)置商品原價(jià) 自動(dòng)調(diào)用propert()函數(shù)第二個(gè)參數(shù)指定的方法。 desc = Goods.PRICE.__doc__ # 自動(dòng)獲取第四個(gè)參數(shù)中設(shè)置的值:屬性描述信息... print(desc) del obj.PRICE # 刪除商品原價(jià) 自動(dòng)調(diào)用propert()函數(shù)第三個(gè)參數(shù)指定的方法。
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python機(jī)器學(xué)習(xí)包mlxtend的安裝和配置詳解
這篇文章主要介紹了python機(jī)器學(xué)習(xí)包mlxtend的安裝和配置詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08基于np.arange與np.linspace細(xì)微區(qū)別(數(shù)據(jù)溢出問題)
這篇文章主要介紹了基于np.arange與np.linspace細(xì)微區(qū)別(數(shù)據(jù)溢出問題),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05使用Pycharm為項(xiàng)目創(chuàng)建一個(gè)虛擬環(huán)境完整圖文教程
這篇文章主要給大家介紹了關(guān)于使用Pycharm為項(xiàng)目創(chuàng)建一個(gè)虛擬環(huán)境的相關(guān)資料,我們?cè)谑褂胮ycharm做項(xiàng)目時(shí),最好給每一個(gè)工程都創(chuàng)建一個(gè)虛擬環(huán)境,將對(duì)應(yīng)的安裝包放在該虛擬環(huán)境中,避免項(xiàng)目與項(xiàng)目之間產(chǎn)生關(guān)系或沖突,便于管理,需要的朋友可以參考下2023-09-09Python實(shí)現(xiàn)對(duì)文件進(jìn)行單詞劃分并去重排序操作示例
這篇文章主要介紹了Python實(shí)現(xiàn)對(duì)文件進(jìn)行單詞劃分并去重排序操作,涉及Python文件讀取、字符串遍歷、拆分、排序等相關(guān)操作技巧,需要的朋友可以參考下2018-07-07python 用opencv實(shí)現(xiàn)圖像修復(fù)和圖像金字塔
這篇文章主要介紹了python 如何用opencv實(shí)現(xiàn)圖像修復(fù)和圖像金字塔,幫助大家更好的理解和使用python處理圖片,感興趣的朋友可以了解下2020-11-11Python數(shù)據(jù)結(jié)構(gòu)之二叉排序樹的定義、查找、插入、構(gòu)造、刪除
這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)結(jié)構(gòu)之二叉排序樹應(yīng)用的相關(guān)資料,二叉排序樹又稱為二叉查找樹,它或者是一顆空樹,或者是具有下列性質(zhì)的二叉樹,需要的朋友可以參考下2021-06-06PyTorch詳解經(jīng)典網(wǎng)絡(luò)ResNet實(shí)現(xiàn)流程
ResNet全稱residual neural network,主要是解決過深的網(wǎng)絡(luò)帶來的梯度彌散,梯度爆炸,網(wǎng)絡(luò)退化(即網(wǎng)絡(luò)層數(shù)越深時(shí),在數(shù)據(jù)集上表現(xiàn)的性能卻越差)的問題2022-05-05