@property裝飾器就是負責把乙個方法變成屬性呼叫的。@property定義get方法,@score.setter定義score屬性的set方法
class**或參考:python中的property屬性 - 小飛的學習筆記 -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
property屬性可以用來給屬性新增約束,比如溫度屬性,我們不允許低於-273度;成績屬性,我們不允許0分以下等等。而且使用property屬性,將來修改約束條件的時候也很方便,可以在**的呼叫方式不變的情況下改變結果。
python中使用property屬性有兩種方法。使用@property裝飾器和使用property()函式。
我們通過廖雪峰官方**的例項來對此加深認識。
@property裝飾器就是負責把乙個方法變成屬性呼叫的。如下例項就可以通過s.score來獲得成績,並且對score賦值之前做出了資料檢查。
classpython中關於property()函式的介紹如下,在jupyter notebook中輸入property??,即可檢視用法: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
從幫助中可以看出,property()函式可以接收4個引數,第乙個引數對應獲取,第二個引數對應設定,第三個引數對應刪除,第四個引數對應注釋,寫法如下:
class[1]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)
(s.score)
print("
********************=")
s.score = 88
(s.score)
print("
********************=")
del s.score
[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 操作 對於 號操作,可變...