Python學習第九天 物件導向程式設計高階

2021-09-24 04:14:27 字數 974 閱讀 1723

物件導向高階

更好使用物件導向程式設計思想進行程式開發,還需要對python中的物件導向程式設計進行更為深入的了解。

@property裝飾器

雖然不建議將屬性設定為私有的,但是如果直接將屬性暴露給外界也是有問題的,比如沒有辦法檢查賦給屬性的值是否有效。之前建議是將屬性命名以單下劃線開頭,通過這種方式來暗示屬性是受保護的,不建議外界直接訪問,那麼如果想訪問屬性可以通過屬性的getter(訪問器)和setter(修改器)方法進行對應的操作。如果要做到這點,可以考慮使用@property包裝器來包裝getter和setter方法,使得對屬性的訪問既安全又方便。

__slots__魔法

不知大家是否意識到python是一門動態語言。通常,動態語言允許我們在程式執行時給物件繫結新的屬性或方法,當然也可以對已經繫結的屬性和方法進行解繫結。但是如果需要限定自定義型別的物件只能繫結某些屬性,可以通過在類中定義__slots__變數來進行限定。需要注意的是__slots__的限定只對當前類的物件生效,對子類並不起任何作用。

靜態方法和類方法

之前,我們在類中定義的方法都是物件方法,也就是說這些方法都是傳送給物件的訊息。實際上,我們寫在類中的方法並不需要都是物件方法,例如我們定義乙個「三角形」類,通過傳入三條邊長來構造三角形,並提供計算周長和面積的方法,但是傳入的三條邊長未必能構造出三角形物件,因此我們可以先寫乙個方法來驗證三條邊長是否可以構成三角形,這個方法很顯然就不是物件方法,因為在呼叫這個方法時三角形物件尚未建立出來(因為都不知道三條邊能不能構成三角形),所以這個方法是屬於三角形類而並不屬於三角形物件的。我們可以使用靜態方法來解決這類問題,

和靜態方法比較類似,python還可以在類中定義類方法,類方法的第乙個引數約定名為cls,它代表的是當前類相關的資訊的物件(類本身也是乙個物件,有的地方也稱之為類的元資料物件),通過這個引數我們可以獲取和類相關的資訊並且可以建立出類的物件。

python學習 第九天

在下這廂有禮了 爬蟲簡單實現 coding utf 8 import urllib def gethtml url page urllib.urlopen url html page.read returnhtml html gethtml print html l urllib 模組提供了讀取we...

python學習第九天

一.檔案的擴充套件模式 擴充套件模式 配合開啟模式的輔助模式,自己單獨不能使用 如 和 b 1.先讀後寫 r 2.先寫後讀 r 3.可讀可寫 w 4.可讀可寫 a 在寫入內容時,會強制把游標移動到最後 二.read seek tell 三個函式的使用 utf 8編碼格式下 預設乙個中文三個位元組 乙...

python學習第九天

函式 函式 function 對功能或者動作的封裝 定義 可以幫我們把一段公共的 提取出來.函式的書寫格式 def 函式名 函式體return 返回值,可在後面加入內容 如 return 內容1 內容2 函式的呼叫格式 函式名 引數 引數 函式在執行過程中給函式傳遞的資訊 形參 函式在宣告的時候寫的...