Python中property函式用法例項分析

2022-10-04 19:36:12 字數 2070 閱讀 5836

通常我們在訪問和賦值屬性的時候,都是在直接和類(例項的)的_lexcx_dict__打交道,或者跟資料描述符等在打交道。但是假如我們要規範這些訪問和設值方式的話,一種方法是引入複雜的資料描述符機制,另一種恐怕就是輕量級的資料描述www.cppcns.com符協議函式property()。它的標準定義是:

+ property(fget=none,fset=none,fdel=none,doc=none)

+ 前面3個引數都是未繫結的方法,所以它們事實上可以是任意的類成員函式

property()函式前面三個引數分別對應於資料描述符的中的__get__,__set__,__del__方法,所以它們之間會有乙個內部的與資料描述符的對映。

綜上描述,其實property()函式主要是用來規範化訪問類的屬性和修改類屬性的值的一種方法。

propwww.cppcns.comerty()函式可以用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)

python中的 property使用

如下 class animal object def init self,name,age self.name name self.age age a animal zhuzhu 9 a.name out 3 zhuzhu a.age out 4 9 a.age 20 a.age out 5 20在...

python中 property裝飾器

python中有乙個被稱為屬性函式 property 的小概念,它可以做一些有用的事情。在這篇文章中,我們將看到如何能做以下幾點 property 考察 student 類 class student object def init self,name,score self.name name se...

python 中 property的使用

從14年下半年開始接觸到python,自學了一段時間,後又跟別人學習了下,把基礎知識基本上學過了。忽然感覺python不可能這麼簡單吧,就這麼點東西?後來看了下書,發現還有很多的高階部分。連續看了兩天,把裝飾符 看了下,記錄下。裝飾符的作用就是類裡的方法變成屬性使用,比直接呼叫方法要直接簡單 直接上...