一 多態:
多態指的是一類事物有多種形態。一般是抽象的形式,它們之間是繼承的關系。
import abc class Animal(metaclass=abc.ABCMeta): @abc.abstractmethod def run(self): pass @abc.abstractmethod def eat(self): pass class People(Animal): def run(self): print('People is walking') def eat(self): print('People is eating ') class People(Animal): def run(self): print('People is walking') # def eat(self): # print('People is eating ') class Pig(Animal): def run(self): print('Pig is walking') def eat(self): print('Pig is eating ')
分析總結:從上面的代碼中可以看出,Animal有三種形態,分別是,人,狗,豬。而且也體現了都是繼承的關系‘豬是動物’。。。。
多態性
(1)什么是多態性(注意:多態與多態性是兩種概念)
多態性是指具有不同功能的函數可以使用相同的函數名,這樣就可以用一個函數名調用不同內容的函數。在面向對象方法中一般是這樣表述多態性:向不同的對象發送同一條消息,不同的對象在接收時會產生不同的行為(即方法)。總而言之就是在不考慮對象的類型的情況下直接使用對象。
(1)增加了程序的靈活性
以不變應萬變,不論對象千變萬化,使用者都是同一種形式去調用,如func(animal)
(2)增加了程序額可擴展性
通過繼承animal類創建了一個新的類,使用者無需更改自己的代碼,還是用func(animal)去調用
class Cat(Animal): def run(self): print('say miaomiao') def fun(obj): obj() cat1=Cat()
Cat類是在上面的類型中新添加的,但同樣可以直接使用fun():
鴨子理論
python是一種多態語言,崇尚鴨子類型。
“鴨子測試”可以這樣表述:
“當看到一只鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那么這只鳥就可以被稱為鴨子。”
在鴨子類型中,關注的不是對象的類型本身,而是它是如何使用的。
class TDisk: def read(self): print('Disk read') class Text: def read(self): print('Text read') disk1=Disk() text1=Text() text.read() disk.read()
兩個類型不一樣,但它們都有相似的方法。
序列類型:列表list,元組tuple, 字符串str
l=list([1,2,3])
t=tuple(('q','b'))
s=str('hello')
print(l.__len__())
print(t.__len__())
print(s.__len__())
只要是序列類型都可以使用