在前面的章節我們已經了解了物件導向的入門知識,知道了如何定義類,如何建立物件以及如何給物件發訊息。為了能夠更好的使用物件導向程式設計思想進行程式開發,我們還需要對python中的物件導向程式設計進行更為深入的了解。
@property裝飾器
之前我們討論過python中屬性和方法訪問許可權的問題,雖然我們不建議將屬性設定為私有的,但是如果直接將屬性暴露給外界也是有問題的,比如我們沒有辦法檢查賦給屬性的值是否有效。我們之前的建議是將屬性命名以單下劃線開頭,通過這種方式來暗示屬性是受保護的,不建議外界直接訪問,那麼如果想訪問屬性可以通過屬性的getter(訪問器)和setter(修改器)方法進行對應的操作。如果要做到這點,就可以考慮使用@property包裝器來包裝getter和setter方法,使得對屬性的訪問既安全又方便,**如下所示:
使用裝飾器的時候,需要注意:
裝飾器名,函式名需要一致.
property需要先宣告,再寫setter,順序不能倒過來
如果你希望一點變數只是被訪問不能被修改,那麼可以使用訪問器@property
如果要修改訪問器中的變數,可以搭建乙個修改器,或者刪除訪問器
例項:輸入三個數字(私有),求三個數字的和,嘗試更改其中兩個數字
例項——郵箱註冊介面:
例項——五角數:
乙個五角數被定義為n(3n-1)/2,…,所以開始幾個數是1,5,12,22,…編寫乙個帶下面函式頭的函式返回五角數。
例項——求整數各個位數的和:
例項——對三個數公升序排列:
Python高階 物件導向程式設計
class user object pass按照慣例,類名以大寫字母開頭,緊接著是 object 表示該類是從 object 類進行繼承的。user user 可以在類的建構函式 init 定義類的屬性。class user object def init self,name,age self.na...
python 物件導向高階程式設計
python 裝飾器 property使用 classscreen property defwidth self returnself.width pass width.setter defwidth self,value self.width value property defheight se...
python物件導向高階程式設計
1.繫結方法 給所有例項都繫結方法,可以給class繫結方法 def set score self,score self.score score student.set score set score 給class繫結方法後,所有例項均可呼叫。但是,如果我們想要限制例項的屬性怎麼辦?比如,只允許對s...