目錄python
多態是指:一類事物的多種形態,,(一個抽象類有多個子類,於是多態的概念依賴於繼承)linux
序列數據類型有多種形態:字符串,列表,元組函數
動物有多種形態:人,狗,豬code
多態能夠具備約束性(通常狀況都有約束性,在其餘語言中約束性很強)對象
class Animal: def speak(self): pass class Pig(Animal): def speak(self): print("哼哼哼") class Dog(Animal): def speak(self): print("汪汪汪") class People(Animal): def speak(self): print("say hello")
#用abc實現接口的統一化,約束代碼(用的比較少) import abc #1 在父類括號內中寫metaclass=abc.ABCMeta class Animal(metaclass=abc.ABCMeta): #2第二在要約束的方法上,寫@abc.abstractmethod @abc.abstractmethod def speak(self): pass class Pig(Animal): # def aaa(self): # print('哈哈哈') # 若是子類中沒有speak方法,就會報錯 def speak(self): print('哼哼哼') pig = Pig()
法三繼承
#用異常處理來實現 class Animal(): def speak(self): # 主動拋出異常 raise Exception('必需要重寫哦') class Pig(Animal): #若是沒有會報錯 def speak(self): print('哼哼哼') pig = Pig()
鴨子類:只要走路像鴨子(對象中有某個綁定方法),那你就是鴨子接口
class Pig: def speak(self): print('哼哼哼') class People: def speak(self): print('哈哈哈') pig = Pig() people = People() def animal_speak(obj): obj.speak() animal_speak(pig) animal_speak(people)
多態性是指:具備不一樣功能的函數可使用相同的函數名,這樣就能夠用一個函數名調用不一樣內容的函數。在面向對象方法中通常是這樣表述多態性:向不一樣的對象發送同一條消息,不一樣的對象在接收時會產生不一樣的行爲(即方法)。也就是說,每一個對象能夠用本身的方式去響應共同的消息。所謂消息,就是調用函數,不一樣的行爲就是指不一樣的實現,即執行不一樣的函數。內存
class Animal: def speak(self): pass class Pig(Animal): def speak(self): print("哼哼哼") class Dog(Animal): def speak(self): print("汪汪汪") class People(Animal): def speak(self): print("say hello") pig = Pig() dog = Dog() people = People() def animal_speak(obj): obj.speak() animal_speak(pig) animal_speak(dog) animal_speak(people) # 哼哼哼 汪汪汪 say hello
class File: def read(self): pass def write(self): pass #內存類 class Memory(File): def read(self): print("Memory....read") def write(self): print('Memory.....write')
鴨子類型的寫法字符串
class Memory: def read(self): print("Memory....read") def write(self): print('Memory.....write') class Network: def read(self): print("Memory....read") def write(self): print('Memory.....write')
多態:同一種事物的多種形態,動物分爲人類,豬類(在定義角度)
多態性:一種調用方式,不一樣的執行效果(多態性)it