這篇文章主要介紹了Python中property函數用法,結合實例形式分析了property函數的功能、參數、使用方法及相關操作注意事項,需要的朋友可以參考下
本文實例講述了Python中property函數用法。分享給大家供大家參考,具體如下:
通常我們在存取和賦值屬性的時候,都是在直接和類別(實例的)的__dict__
打交道,或者跟資料描述符等在打交道。但假如我們要規範這些存取和設值方式的話,一種方法是引入複雜的資料描述子機制,另一種恐怕就是輕量級的資料描述子協定函數Property()。它的標準定義是:
property(fget=None,fset=None,fdel=None,doc=None)
前面3個參數都是未綁定的方法,所以它們事實上可以是任意的類別成員函數
property()函數前面三個參數分別對應於資料描述符的中的__get__
,__set__
,__del__
方法,所以它們之間會有一個內部的與資料描述符的對應。
綜上描述,其實property()
函數主要是用來規範化存取類別的屬性和修改類別屬性的值的一種方法。
property()
函數可以用0,1,2,3,4個參數來調用,順序依序是get,set,del,doc,這四個。
property()
的實作方法有兩種,見程式碼
第一種:
#!/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) # 输出此时矩形的长和宽 # 此时执行的是getSize print r.size # 修改size的值 # 此时执行的是setSize r.size = 100, 200 print r.size del r.height print r.width # height属性已经被删除,下面语句会报错 # print r.size
執行結果:
(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 # 下面加@符号的函数名要相同 # 第一个是get方法 @property def Size(self): return self.width, self.height # 此处是set方法,是@property的副产品 @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執行結果:
(10, 20) (100, 200) 100
####################### #
以上是Python中property函數的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!