Python 中 property的介紹與使用

2021-10-18 20:37:13 字數 1550 閱讀 9329

python的@property是python的一種裝飾器,是用來修飾方法的。

作用:我們可以使用@property裝飾器來建立唯讀屬性,@property裝飾器會將方法轉換為相同名稱的唯讀屬性,可以與所定義的屬性配合使用,這樣可以防止屬性被修改。

使用場景:

1.修飾方法,是方法可以像屬性一樣訪問。

class

dataset

(object):

@property

defmethod_with_property

(self)

:##含有@property

return

15def

method_without_property

(self)

:##不含@property

return

15l = dataset(

)print

(l.method_with_property)

# 加了@property後,可以用呼叫屬性的形式來呼叫方法,後面不需要加()。 結果:15

print

(l.method_without_property())

#沒有加@property , 必須使用正常的呼叫方法的形式,即在後面加() 結果15

如果使用property進行修飾後,又在呼叫的時候,方法後面新增了(), 那麼就會顯示錯誤資訊:typeerror: 『int』 object is not callable,也就是說新增@property 後,這個方法就變成了乙個屬性,如果後面加入了(),那麼就是當作函式來呼叫,而它卻不是callable(可呼叫)的。

2.與所定義的屬性配合使用,這樣可以防止屬性被修改。

​ 由於python進行屬性的定義時,沒辦法設定私有屬性,因此要通過@property的方法來進行設定。這樣可以隱藏屬性名,讓使用者進行使用的時候無法隨意修改。

class

dataset

(object):

def__init__

(self)

: self._images =

1 self._labels =

2#定義屬性的名稱

@property

defimages

(self)

:#方法加入@property後,這個方法相當於乙個屬性,這個屬性可以讓使用者進行使用,而且使用者有沒辦法隨意修改。

return self._images

@property

deflabels

(self)

:return self._labels

l = dataset(

)#使用者進行屬性呼叫的時候,直接呼叫images即可,而不用知道屬性名_images,因此使用者無法更改屬性,從而保護了類的屬性。

print

(l.images)

# 加了@property後,可以用呼叫屬性的形式來呼叫方法,後面不需要加()。

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不可能這麼簡單吧,就這麼點東西?後來看了下書,發現還有很多的高階部分。連續看了兩天,把裝飾符 看了下,記錄下。裝飾符的作用就是類裡的方法變成屬性使用,比直接呼叫方法要直接簡單 直接上...