從linux原始碼看socket的close
阿新 • • 發佈:2020-07-29
面向物件
面向過程
核心就是”過程“二字
過程的核心思想就是將程式流程化
過程是“流水線”,用來分步驟解決問題的
面向物件
核心是“物件”二字
物件是“容器”,用來盛放資料與功能的
物件的核心思想就是將程式“整合”
類也是“容器”,該容器用來存放同類物件共有的資料與功能
類中存放的是物件共有的資料與功能
類可以訪問
1.類的資料屬性是共享給所有物件用的,大家訪問的地址都一樣
2.類的函式屬性是繫結給物件用的 類呼叫自己的函式屬性必須嚴格按照函式的用法來
繫結方法的特殊之處在於:誰來呼叫繫結方法就會將誰當做第一傳入個引數自動
屬性訪問的語法
1.訪問資料屬性 類名.__dict__['變數名'] 2.訪問函式屬性 類名.函式名
__init__方法
1.會在呼叫類時自動觸發執行,用來為物件初始化自己獨有的資料
2.__init__內應該存放的是為物件初始化屬性的功能,但是是可以存放任意其他程式碼 想要在類呼叫時就立即執行的程式碼都可以放到該方法內
3.__init__方法必須返回None
封裝:
1.將封裝的屬性進行隱藏操作 如何隱藏:在屬性名前家__字首,就會實現一個對外隱藏性效果 1、在類外部無法直接訪問雙下劃線開頭的屬性,但知道了類 名和屬性名就可以拼出名字:_類名__屬性名 所以說這種操作並沒有什麼嚴格意義上地限制外部訪問,僅僅只是一種語法意義上的變形。 2、這種隱藏對外不對內,因為__開頭的屬性會在檢查類體內程式碼語法時統一發生變形 3、這種變形操作只在檢測類體語法的時候發生一次,之後定義的__開頭的屬性都不會變化 為何要隱藏: 隱藏資料屬性:不讓外界直接引用,可以附加一系列條件的介面 隱藏函式/方法屬性:不讓類外引用,只能在類內用
繼承:
繼承是一種建立新類的方式,新建的類可稱為子類或派生類,父類又可稱為基類或超類,子類會遺傳父類的屬性 Python支援多繼承 在Python中,新建的類可以繼承一個或多個父類 優點:子類可以同時遺傳多個父類的屬性,最大限度地重用程式碼 缺點:1.違背了人的思維習慣 2.程式碼的可讀性會變差 3.不建議使用多繼承,有可能會引發菱形問題,擴充套件性變差 如果真的涉及到一個子類不可避免地要重用多個父類的屬性,應該使用Mixins 繼承表達的是一種什麼“是”什麼的關係 為何要用繼承: 用來解決類與類之間程式碼冗餘問題 在子類派生的2新方法中如何重用父類的功能 方式一:指名道姓呼叫某一個類下的函式=》不依賴繼承關係 方式二:super()呼叫父類提供給自己的方法=》嚴格依賴繼承關係 呼叫super()會得到一個特殊的物件該物件會參照當前的mro,去當前類的父類中找屬性
Python2中:
新式類:繼承了object類的子類,以及該子類的子類
經典類:沒有繼承object類的子類,以及該子類的子類
Python3中:
沒有繼承任何類,那麼會預設繼承object類,所以Python3中所有的類都是object類
反射機制:
指的是在程式執行過程中可以"動態"獲取物件的資訊實現反射機制的步驟
1.通過多dir:查看出某一個物件下可以.出來哪些屬性來
2.可以通過字串反射到真正得到屬性上,得到屬性值
四個內建函式的使用:
hasattr()判斷屬性是否存在
hasattr()獲取屬性
setattr()賦值屬性
delattr()解除屬性繫結
元類:
元類就是用來例項化產生類的類
關係:元類----例項化----類----物件
type是內建的元類
檢視內建的元類:
我們用class關鍵字定義的所有的類以及內建的類都是由內建的元類type例項化的
class關鍵字:
類有三大特徵:
1.類名
2.類的基類
3.執行類體程式碼拿到類的名稱空間
屬性查詢的原則:物件->類—>父類
異常處理:
異常是程式發生錯誤的訊號,程式一旦出錯就會丟擲異常,程式的執行隨機終止
異常處理的三個特徵:
異常的追蹤資訊
異常的型別
異常的內容
如何處理異常:
語法上的錯誤:SyntaxError
處理方式:必須在程式執行前就改正
邏輯上的錯誤:NameError,IndexError
針對邏輯上的異常又分成兩種處理方式:
錯誤發生的條件是可以預知的
錯誤發生的條件是無法預知的
try:
子程式碼塊 有可能會丟擲異常的程式碼
except 異常型別1 as e:
pass
except 異常型別2 as e:
pass
except Exception as e: 萬能異常
pass
else:
如果被檢測的子程式碼塊沒有發生,則會執行else的子程式碼
else不能與try單獨使用
finally:不處理異常,無論是否發生異常都會執行finally的子程式碼無論被檢查的子程式碼塊有無異常發生,都會執行finally的子程式碼 應該把被檢測程式碼中回收系統資源的程式碼放到這