封裝
封裝有兩方面含義:
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 建構函式,初始時,當前速度...