多型性與鴨子型別

2021-10-04 22:49:23 字數 2697 閱讀 2731

class

animal

:pass

class

people

(animal)

:pass

class

dog(animal)

:pass

class

pig(animal)

:pass

為何要有多型=》多型會帶來什麼樣的特性

多型性指的是可以在不考慮物件具體型別的情況下而直接使用物件

class

animal

:# 統一所有子類的方法

defsay

(self)

:print

('動物基本的發聲頻率。。。'

,end=

' ')

class

people

(animal)

:def

say(self)

:super()

.say(

)print

('嚶嚶嚶嚶嚶嚶嚶'

)class

dog(animal)

:def

say(self)

:super()

.say(

)print

('汪汪汪'

)class

pig(animal)

:def

say(self)

:super()

.say(

)print

('哼哼哼'

)obj1=people(

)obj2=dog(

)obj3=pig(

)obj1.say(

)obj2.say(

)obj3.say(

)定義統一的介面,接收傳入的動物物件

defanimal_say

(animal)

: animal.say(

)animal_say(obj1)

animal_say(obj2)

animal_say(obj3)

print

('hello'

.__len__())

print([

1,2,

3].__len__())

print

(.__len__())

defmy_len

(val)

:return val.__len__(

)print

(my_len(

'hello'))

print

(my_len([1

,2,3

]))print

(my_len())

len(

'hello'

)len([

1,2,

3])len

()

python推崇的是鴨子型別

「如果看起來像、叫聲像而且走起路來像鴨子,那麼它就是鴨子」

class

cpu:

defread

(self)

:print

('cpu read'

)def

write

(self)

:print

('cpu write'

)class

mem:

defread

(self)

:print

('mem read'

)def

write

(self)

:print

('mem write'

)class

txt:

defread

(self)

:print

('txt read'

)def

write

(self)

:print

('txt write'

)obj1=cpu(

)obj2=mem(

)obj3=txt(

)obj1.read(

)obj1.write(

)obj2.read(

)obj2.write(

)obj3.read(

)obj3.write(

)

import abc

class

animal

(metaclass=abc.abcmeta)

:# 統一所有子類的標準

@abc.abstractmethod

defsay(self)

:pass

# obj=animal() # 不能例項化抽象類自己

class

people

(animal)

:def

say(self)

:pass

class

dog(animal)

:def

say(self)

:pass

class

pig(animal)

:def

say(self)

:pass

## obj1=people()

# obj2=dog()

# obj3=pig()

多型性與鴨子型別

多型指的是一類事物有多種形態,比如動物有多種形態 貓 狗 豬 class animal 同一類事物 動物 deftalk self pass class cat animal 動物的形態之一 貓 deftalk self print 喵喵喵 class dog animal 動物的形態之二 狗 de...

多型 多型性和鴨子型別

目錄多型指的是同一種事物有多種形態,比如水有液態 固態和氣態。乙個抽象類有多個子類,因而多型的概念依賴於繼承。class animal def talk self pass class dog animal def talk self print 汪汪汪 class cat animal def t...

多型及多型性和鴨子型別

多型及多型性 多型指的是同一類 種事物的不同形態 其實就是繼承關係的表現 多型只是一種格式形態,它的主要體現是多型性 多型性在類中的簡單表現形式 class animal def run self print run fast class mouse animal def sound self pr...