Python高階 3 1再議 封裝 繼承 多型

2022-09-14 04:39:08 字數 2225 閱讀 4455

封裝、繼承、多型 是物件導向的3大特性

使用函式來開發,示例**如下:

使用物件導向來開發,示例**如下:

好處

在使用面向過程程式設計時,當需要對資料處理時,需要考慮用哪個模板中哪個函式來進行操作,但是當用物件導向程式設計時,因為已經將資料儲存到了這個獨立的空間中,這個獨立的空間(即物件)中通過乙個特殊的變數(__class__)能夠獲取到類(模板),而且這個類中的方法是有一定數量的,與此類無關的將不會出現在本類中,因此需要對資料處理時,可以很快速的定位到需要的方法是誰 這樣更方便

全域性變數是只能有1份的,多個函式需要多個備份時,往往需要利用其它的變數來進行儲存;而通過封裝 會將用來儲存資料的這個變數 變為了物件中的乙個「全域性」變數,只要物件不一樣那麼這個變數就可以再有1份,所以這樣更方便

**劃分更清晰

上圖中的問題,我們一般會選擇 在 類1的基礎上進行修改,因為這樣更好些

能夠提公升**的重用率,即開發乙個類,可以在多個子功能中直接使用

繼承能夠有效的進行**的管理,當某個類有問題只要修改這個類就行,而其繼承這個類的子類往往不需要就修改

"""minios 作業系統類 """

def __init__(self, name):

self.name = name

def __str__(self):

# 判斷是否已經安裝了軟體

else:

def __init__(self, name, version, desc):

self.name = name

self.version = version

self.desc = desc

def __str__(self):

return "%s 的當前版本是 %s - %s" % (self.name, self.version, self.desc)

def install(self):

print("將 %s [%s] 的執行程式複製到程式目錄..." % (self.name, self.version))

pass

def install(self):

print("正在解壓縮安裝程式...")

super().install()

linux = minios("linux")

print(linux)

pycharm = pycharm("pycharm", "1.0", "python 開發的 ide 環境")

chrome = chrome("chrome", "2.0", "谷歌瀏覽器")

print(linux)

執行結果

將 pycharm [1.0] 的執行程式複製到程式目錄...

正在解壓縮安裝程式...

將 chrome [2.0] 的執行程式複製到程式目錄...

已經安裝了 chrome,無需再次安裝

linux 安裝的軟體列表為 ['pycharm', 'chrome']

小總結:

多型需要用到繼承,重寫,呼叫某個方法時,要看是父類建立的例項,還是子類建立的例項,例項不同呼叫的方法不同

全域性變數2

全域性變數3

...def 函式1():

pass

def 函式2():

pass

def 函式3():

pass

def 函式4():

pass

def 函式5():

pass

屬性1 屬性2

def 方法1(self):

pass

def 方法2(self):

pass

class 類2(object):

屬性3def 方法3(self):

pass

def 方法4(self):

pass

def 方法5(self):

pass

python封裝繼承 python繼承 封裝

python繼承 封裝 1 為什麼要封裝 封裝資料的主要原因是 保護隱私 封裝方法的主要原因是 隔離複雜度 2 封裝分為兩個層面 第乙個層面的封裝 什麼都不用做 建立類和物件會分別建立二者的命名空間,我們只能用類名.或者obj.的方式去訪問裡面的名字,這本身就是一種封裝 r1.nickname 草叢...

Python高階 封裝

繼承 封裝 多型 封裝對外部隱藏資訊,不能隨意訪問 修改物件的資料 方法 通過限制類的屬性和方法的訪問方式,實現 封裝 封裝的三個層次 類的封裝 外部可以任意訪問 修改類中的屬性和方法 私有屬性 外部不可以訪問 修改類的屬性或方法 公有方法 私有屬性 外部有條件限制的訪問 修改屬性,呼叫方法 封裝的...

python入門 繼承 多繼承

定義 子類擁有父類的所有方法和屬性,子類可直接享受父類中封裝好的方法 語法 class 類名 父類名 pass繼承的傳遞性 c類繼承與b類,b類繼承於a類 覆蓋父類的方法 在子類中定義乙個和父類同名的方法並實現 super 函式 在重寫父類方法時,呼叫在父類中封裝的方法實現 例 def login ...