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