第十二周部落格之物件導向程式設計3

2021-09-23 01:49:17 字數 3182 閱讀 6190

封裝

封裝有兩方面含義:

1.將資料(屬性)和行為(方法)包裝到類物件中。在方法內部對屬性進行操作,

在類物件的外部呼叫方法。這樣,無需關心方法內部的具體實現細節,從而隔離了複雜度。

2.在類物件內部通過訪問控制把某些屬性和方法隱藏起來,不允許在類物件外部直接訪問,

而是在類物件的內部對外提供公開的介面方法

(例如getter和setter)以訪問隱藏的資訊。這樣,就對隱藏的資訊進行了保護。

繼承

單繼承:子類只有乙個直接父類時稱為單繼承

假設子類和父類分別chilclass和parentclass,子類繼承父類的語法格式為:

class childclass(parentclass):

pass

多繼承:子類有多個直接父類時稱為多繼承

假設子類是childclass,直接父類是parentclassl, parentclass2, ..., parentclassn

子類繼承父類的語法格式為:

class childclass(parentclassl, parentlass2, ... parentclassn):

pass

子類會繼承所有父類(包括所有直接父類和和所有間接父類)的所有屬性和方法。

class dog(abject): class bird(object):

def eat(self) : def eat(self):

print(」吃飯") print("吃飯")

def drink(self): def drink(self):

print(」喝水") print("喝水")

def swim(self) : def fly(self):

print("游泳」) print("飛翔")

當幾個類物件中有共同的屬性和方法時,就可以把這些屬性和方法抽象並

提取到乙個基類中,每個類物件特有的屬性和方法還是在本類物件中定義,

這樣,只需要讓每個類物件都繼承這個基類,就可以訪問基類中的屬性和方法了。

繼承基類的每個類物件被稱為派生類。基類也被稱為父類或超類,派生類也被稱為子類。

python中的所有類物件都繼,自一乙個統-的基類: object.

這就是為什麼我們在定義類物件時要在類名後面新增(object).

除了封裝,繼承也是物件導向程式設計的三大特徵之一。

繼承是實現**復用的重要手段。

重寫

如果子類對繼承自父親的某個屬性或方法不滿意,可以在子類中對其進行重寫

從而提供自定義的實現

重寫的方式為:在子類中定義與父類中同名的屬性或方法(包括裝飾器)。

子類重寫父類的屬性後,通過子類或其實例物件只能訪問子類重寫後的屬性,

而無法再訪問父類中被重寫的屬性

子類重寫父類的方法後,通過子類或其實例物件只能訪問子類重寫後的方法,

而無法再呼叫父類中被重寫的方法

class parentclass(object):

ca = "ca(父類)"

def __init__(self):

print("__init__()被呼叫了(父類)")

def im(self):

print("im()被呼叫了(父類)")

@classmethod

def cm(cls):

print("cm()被呼叫了(父類)")

class childclass(parentclass):

ca = "ca(子類)"

def __init__(self):

print("__init__()被呼叫了(子類)")

def im(self):

print("im()被呼叫了(子類)")

@classmethod

def cm(cls):

print("cm()被呼叫了(子類)")

mro

mro的全稱是method resolution order (方法解析順序),它指的是對於-顆類繼承樹,

當呼叫最底層類物件所對應例項物件的方法時,python直譯器在 類繼承樹上搜尋方法

的順序。

對於棵類繼承樹,可以呼叫最底層類物件的方法mro()或訪問最底層類物件的特

殊屬性_ mro_,獲得這棵類繼承樹的mro。

class a(object):

def f(self):

print("a.f")

class b(a):

def f(self):

print("b.f")

class c(a):

def f(self):

print("c.f")

class d(b, c):

def f(self):

print("d.f")

d= d()

d.f()

<<< d.f

多型

----在不考慮物件型別的情況下使用物件

簡單地說,多型就是"具有多種形態",它指的是:即便不知道一乙個變數所引用的物件到底是什麼型別,

仍然可以通過這個變數呼叫方法,在執行過程中根據變數所引用物件的型別,動態地決定呼叫哪個物件中的方法。

第十二周部落格總結

姓名部落格名稱 部落格鏈結 評價人工評分 王雪芹python爬蟲之爬取 到資料庫 王雪琳爬蟲,爬取景點資訊採用pandas整理資料 博主結合課堂測試進行分析研究,有注釋有截圖,很好 趙金輝初學爬蟲 二 建議加入一些分析 注釋,更易理解 張鳴鳳本週未交 陳耀婷python爬蟲 資料爬取和具體解析 博主...

第十二周作業3

實驗目的 學會使用switch語句解決實際問題 實驗內容 計算存款利息。程式頭部注釋開始 為避免提交博文中遇到的問題,將用於表明注釋的斜槓刪除了 程式的版權和版本宣告部分 檔名稱 計算利率 作 者 劉柏蔚 完成日期 2011 年 11 月 16 日 版 本號 對任務及求解方法的描述部分 輸入描述 金...

第十二周任務3

問題描述 程式頭部的注釋結束 include include include using namespace std enum vehiclestaus 車輛狀態 泊車 行進 class vehicle 車輛類 vehicle vehicle int maxs,int w 建構函式,初始時,當前速度...