python中的property屬性

2022-03-01 18:02:24 字數 2919 閱讀 5160

@property裝飾器就是負責把乙個方法變成屬性呼叫的。@property定義get方法,@score.setter定義score屬性的set方法

class

student(object):

def__init__(self, score=0):

self._score =score

@property

defscore(self):

print("

getting score")

return

self._score

@score.setter

defscore(self, value):

print("

setting score")

ifnot

isinstance(value, int):

raise valueerror("

score must be an integer!

")

if value < 0 or value > 100:

raise valueerror('

score must between 0 ~ 100!')

self._score =value

s = student(60)

s.score

print("

********************=")

s.score = 88s.score

**或參考:python中的property屬性 - 小飛的學習筆記 -

property屬性可以用來給屬性新增約束,比如溫度屬性,我們不允許低於-273度;成績屬性,我們不允許0分以下等等。而且使用property屬性,將來修改約束條件的時候也很方便,可以在**的呼叫方式不變的情況下改變結果。

python中使用property屬性有兩種方法。使用@property裝飾器和使用property()函式。

我們通過廖雪峰官方**的例項來對此加深認識。

@property裝飾器就是負責把乙個方法變成屬性呼叫的。如下例項就可以通過s.score來獲得成績,並且對score賦值之前做出了資料檢查。

class

student(object):

def__init__

(self, score=0):

self._score =score

@property

defscore(self):

print("

getting score")

return

self._score

@score.setter

defscore(self, value):

print("

setting score")

ifnot

isinstance(value, int):

raise valueerror("

score must be an integer!

")

if value < 0 or value > 100:

raise valueerror('

score must between 0 ~ 100!')

self._score =value

s = student(60)

s.score

print("

********************=")

s.score = 88s.score

python中關於property()函式的介紹如下,在jupyter notebook中輸入property??,即可檢視用法:

從幫助中可以看出,property()函式可以接收4個引數,第乙個引數對應獲取,第二個引數對應設定,第三個引數對應刪除,第四個引數對應注釋,寫法如下:

class

student(object):

def__init__(self, score=0):

self._score =score

defget_score(self):

print("

getting score")

return

self._score

defset_score(self, value):

print("

setting score")

ifnot

isinstance(value, int):

raise valueerror("

score must be an integer!

")

if value < 0 or value > 100:

raise valueerror('

score must between 0 ~ 100!')

self._score =value

defdel_score(self):

print("

delete score")

delself._score

score =property(get_score, set_score, del_score)

s = student(60)

print

(s.score)

print("

********************=")

s.score = 88

print

(s.score)

print("

********************=")

del s.score

[1] 

[2] 

[3] 

JS中Attribute和property的區別

在使用angular中的資料繫結時,發現對html屬性和dom屬性不是很清楚,順便屢屢清楚這二者的區別。attribute html屬性,書寫在標籤內的屬性,使用setattribute 和getattribute 進行設定和獲取。property dom屬性,html標籤對應的dom節點屬性,使用...

Python 今天抽空學習了 Property

1 property使方法像屬性一樣呼叫 property可以把乙個例項方法變成其同名屬性,以支援.號訪問,它亦可標記設定限制,加以規範 2 property成為屬性函式,可以對屬性賦值時做必要的檢查,比如在setter方法裡加過濾判斷條件。3 顯得相對簡潔一些,相比自定義的get和set方法,pr...

python中 python中的 與

這一部分首先要理解python記憶體機制,python中萬物皆物件。對於不可變物件,改變了原來的值,其別名 變數名 繫結到了新值上面,id肯定會改變 對於可變物件,操作改變了值,id肯定會變,而 是本地操作,其值原地修改 對於 號操作,可變物件和不可變物件呼叫的都是 add 操作 對於 號操作,可變...