筆記 python之 property的使用

2021-10-01 13:08:18 字數 1499 閱讀 1988

很多時候我們需要對乙個物件設定某個屬性和獲取某個屬性的時候,我們一般會寫乙個"set"的方法和「get」的方法,但是這樣寫起來不友好,使用起來不方便,如下**所示:

class

student

(object):

defset_score

(self, score):if

notisinstance

(score,

int)

:raise valueerror(

"score must be an integer"

)if score <

0or score >

100:

raise valueerror(

"score must between 0~100"

) self._score = score

defget_score

(self)

:return self._score

>>

> s = student(

)>>

> s.set_score(60)

# 通過呼叫set_score()例項方法並傳入引數設定學生成績屬性

>>

> s.get_score(

)# 通過get_score()例項方法獲取學成的成績屬性

60

此時,我們就可以使用@property這個類裝飾器,來把乙個方法當做屬性來呼叫,這樣寫起來會讓人很舒服(ps:能讓人感到舒服的**才是好的**^_^)

class

student

(object):

@property

defscore

(self)

:return self._score

@score.setter

defscore

(self, value):if

notisinstance

(value,

int)

:raise valueerror(

'score must be an integer!'

)if value <

0or value >

100:

raise valueerror(

'score must between 0 ~ 100!'

) self._score = value

>>

> s = student(

)>>

> s.score =

60# 實際轉化為s.set_score(60)

>>

> s.score # 實際轉化為s.get_score()

60

優點:@property廣泛應用在類的定義中,可以讓呼叫者寫出簡短的**,同時保證對引數進行必要的檢查,這樣,程式執行時就減少了出錯的可能性。

一文帶你搞懂python中的property

通常我們在獲得變數的一些私有屬性時,必須通過方法來獲取私有屬性,並不能直接訪問 修改其數值的時候也是要通過方法去修改,這樣非常的不方便 所以python提供了一種方式,將呼叫方法的的形式轉變為訪問屬性,這樣使用非常方便 class student def init self 這是乙個私有屬性 sel...

Python學習筆記之IF

關係表示式 邏輯表示式 and,or,not 單分支 num 0 if num 1 print num 大於 1 else print num 不大於1 雙分支 num 10 if num 1 print num 大於 10 elif num 10 print num 等於 10 elif num ...

python筆記之if練習

if練習 此次小demo涉及到if巢狀,佔位符使用,以及乙個良好的思維邏輯。如題 雲彩之上奶茶店盛大開業!門店招牌如下 勁爆勁爆,雲彩之上開業了!輸入序號即可購買!1 超土豪咖啡僅需 88 2 宇宙無敵大榴蓮 12 3 自動翻譯筆記本僅需 100 4 貧民咖啡僅需 1 5 土豪咖啡僅需 8 請你幫收...