Python中property函數(shù)用法實例分析
本文實例講述了Python中property函數(shù)用法。分享給大家供大家參考,具體如下:
通常我們在訪問和賦值屬性的時候,都是在直接和類(實例的)的__dict__打交道,或者跟數(shù)據(jù)描述符等在打交道。但是假如我們要規(guī)范這些訪問和設(shè)值方式的話,一種方法是引入復(fù)雜的數(shù)據(jù)描述符機(jī)制,另一種恐怕就是輕量級的數(shù)據(jù)描述符協(xié)議函數(shù)Property()。它的標(biāo)準(zhǔn)定義是:
+ property(fget=None,fset=None,fdel=None,doc=None)
+ 前面3個參數(shù)都是未綁定的方法,所以它們事實上可以是任意的類成員函數(shù)
property()函數(shù)前面三個參數(shù)分別對應(yīng)于數(shù)據(jù)描述符的中的__get__,__set__,__del__方法,所以它們之間會有一個內(nèi)部的與數(shù)據(jù)描述符的映射。
綜上描述,其實property()函數(shù)主要是用來規(guī)范化訪問類的屬性和修改類屬性的值的一種方法。
property()函數(shù)可以用0,1,2,3,4個參數(shù)來調(diào)用,順序依次是get,set,del,doc,這四個。
property()的實現(xiàn)方法有兩種,見代碼
第一種:
#!/usr/bin/python
#coding: utf-8
class Rectangle(object):
def __init__(self, width, height):
self.width = width
self.height = height
def getSize(self):
return self.width, self.height
def setSize(self, size):
self.width, self.height = size
def delSize(self):
del self.height
size = property(getSize, setSize, delSize, "實例對象")
r = Rectangle(10, 20)
# 輸出此時矩形的長和寬
# 此時執(zhí)行的是getSize
print r.size
# 修改size的值
# 此時執(zhí)行的是setSize
r.size = 100, 200
print r.size
del r.height
print r.width
# height屬性已經(jīng)被刪除,下面語句會報錯
# print r.size
運(yùn)行結(jié)果:
(10, 20)
(100, 200)
100
第二種:(裝飾器)
#!/usr/bin/python
#coding: utf-8
class Rectangle(object):
def __init__(self, width, height):
self.width = width
self.height = height
# 下面加@符號的函數(shù)名要相同
# 第一個是get方法
@property
def Size(self):
return self.width, self.height
# 此處是set方法,是@property的副產(chǎn)品
@Size.setter
def Size(self, size): # 此時接收的是一個元祖
self.width, self.height = size
@Size.deleter
def Size(self):
del self.width
del self.height
r = Rectangle(10, 20)
print r.Size
r.Size = 100, 200
print r.Size
del r.height
# 由于上一步刪除了self.height屬性,所以下面再訪問的時候會報錯
# print r.Size
# 可以訪問width,還沒有被刪除
print r.width
運(yùn)行結(jié)果:
(10, 20)
(100, 200)
100
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python面向?qū)ο蟪绦蛟O(shè)計入門與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
解決安裝和導(dǎo)入tensorflow、keras出錯的問題
這篇文章主要介紹了解決安裝和導(dǎo)入tensorflow、keras出錯的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
Python中xlsx文件轉(zhuǎn)置操作詳解(行轉(zhuǎn)列和列轉(zhuǎn)行)
很多時候我們處理的Excel表格并不是我們想要的樣子,需要將表格的形式進(jìn)行相應(yīng)轉(zhuǎn)換后進(jìn)行數(shù)據(jù)分析操作,下面這篇文章主要給大家介紹了關(guān)于Python中xlsx文件轉(zhuǎn)置操作(行轉(zhuǎn)列和列轉(zhuǎn)行)的相關(guān)資料,需要的朋友可以參考下2022-07-07
python中Tkinter復(fù)選框Checkbutton是否被選中判斷
這篇文章主要介紹了python中Tkinter復(fù)選框Checkbutton是否被選中判斷方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01

