class
animal
:pass
class
people
(animal)
:pass
class
dog(animal)
:pass
class
pig(animal)
:pass
python推崇的是鴨子型別為何要有多型=》多型會帶來什麼樣的特性
多型性指的是可以在不考慮物件具體型別的情況下而直接使用物件
class
animal
:# 統一所有子類的方法
defsay
(self)
('動物基本的發聲頻率。。。'
,end=
' ')
class
people
(animal)
:def
say(self)
:super()
.say(
('嚶嚶嚶嚶嚶嚶嚶'
)class
dog(animal)
:def
say(self)
:super()
.say(
('汪汪汪'
)class
pig(animal)
:def
say(self)
:super()
.say(
('哼哼哼'
)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)
('hello'
.__len__())
print([
1,2,
3].__len__())
(.__len__())
defmy_len
(val)
:return val.__len__(
(my_len(
'hello'))
(my_len([1
,2,3
(my_len())
len(
'hello'
)len([
1,2,
3])len
()
「如果看起來像、叫聲像而且走起路來像鴨子,那麼它就是鴨子」
class
cpu:
defread
(self)
('cpu read'
)def
write
(self)
('cpu write'
)class
mem:
defread
(self)
('mem read'
)def
write
(self)
('mem write'
)class
txt:
defread
(self)
('txt read'
)def
write
(self)
('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...