Python物件導向的三大特性之多型

2021-09-26 08:14:54 字數 1299 閱讀 7213

多型指的是一類事物有多種形態

動物有多種形態:人,狗,豬

'''

'''import abc

# 多型:同一種事物的多種形態,動物分為:豬類,人類

class animal(metaclass=abc.abcmeta):

@abc.abstractmethod # 子類必須繼承

def run(self):

pass

class pig(animal):

def run(self): # 繼承父類必須有這個方法

print('pig is walking')

pass

class pepple(animal):

def run(self):

print('pepple is walking')

peo1=pepple()

pig1=pig()

# peo1.run()

# pig1.run()

# 多型性:一種呼叫方式,多種執行結果

依賴於:

'''1、繼承

'''# 定義統一的介面,可以傳入不同型別的值,但是呼叫的邏輯都一樣,執行的結果卻不一樣

def fun(obj): # obj 這個引數沒有型別限制,可以傳入不同的值

obj.run() # 大家都繼承 animal 類,都有 run,但執行的結果不一樣

fun(peo1)

fun(pig1)

pepple is walking

pig is walking

不同型別的值,呼叫同一介面,出現不同的結果

***************===

l=[1,2,3,4]

s='hello'

t=(4,5,6,7,8) # 3個不同型別的值

def fun1(obj): # 定義統一介面

return obj.__len__()

print(fun1(l))

print(fun1(s))

print(fun1(t))

返回不一樣的結果45

5

其實大家從上面多型性的例子可以看出,我們並沒有增加什麼新的知識,也就是說python本身就是支援多型性的,這麼做的好處是什麼呢?

1.增加了程式的靈活性

以不變應萬變,不論物件千變萬化,使用者都是同一種形式去呼叫,如func(animal)

2.增加了程式額可擴充套件性

通過繼承animal類建立了乙個新的類,使用者無需更改自己的**,還是用func(animal)去呼叫

python物件導向三大特性

定義 封裝一些資料和方法,只給外界提供必要的功能,掩蓋細節,提高 復用性和系統安全性。資料角度 用乙個類包裝多個變數,還可以定義方法,運算元據 行為角度 不同程式設計師開發乙個專案的不同功能,在使用時,直接呼叫,不需要思考其內部實現 設計角度 1 分而治之 拿到需求之後,分析需求,將需求拆解為不同的...

Python 物件導向三大特性 封裝

封裝,顧名思義就是將內容封裝到某個地方,以後再去呼叫被封裝在某處的內容。封裝重點 1.def init self 構造方法 雖然它是函式形式,但在類中就不叫函式了 叫方法 2.value 私有 隱藏 屬性,只能在類中被呼叫。3.def func self 私有 隱藏 方法,只能在類中被呼叫。示例1 ...

python 物件導向三大特性 繼承

一 什麼是繼承 繼承是一種建立新類的方式,在python中,新建的類可以繼承乙個或者多個父類,父類又可以稱為基類活超類,新建的類稱為派生類或子類。簡單來說就是 子類可以繼承父類的方法和屬性。python中類的繼承分為 單繼承和多繼承 class parentclass1 定義父類 pass clas...