首頁 >後端開發 >Python教學 >Python中property函數的用法

Python中property函數的用法

不言
不言原創
2018-06-04 16:24:062313瀏覽

這篇文章主要介紹了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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn