面向對象——多態和多態性
阿新 • • 發佈:2019-04-27
bst 對象 面向 功能 write %s cpu 類重寫 屬性
1、什麽是多態:多態指的是同一種/類事物的不同形態(父類對象的多種(子類對象)狀態)
2、為什麽要使用多態?
# 多態性:在多套的背景下,可以不用考慮對象的具體類型的前提下直接使用對象
# 多態性的精髓:統一
3、如何使用多態
1 imort abc 2 class People(metaclass=abc.ABCMeta): 3 def __init__(self, name): 4 self.name = name 5 6 @abc.abstractmethod 7 def speak(self): pass 89 class Chinese(People): 10 def speak(self): 11 print(‘說中國話‘) 12 13 class England(People): 14 def speak(self): 15 print(‘說英國話‘) 16 17 18 if __name__ == ‘__main__‘: 19 # 多態的體現:功能或是需求,需要父類的對象,可以傳入父類對象或任意子類對象均可以 20 # 註:一般都是規定需要父類對象,傳入子類對象21 def ask_someone(obj): 22 print(‘讓%s上臺演講‘ % obj.name) # 父類提供,自己直接繼承 23 obj.speak() # 父類提供,只不過子類重寫了 24 25 ch = Chinese(‘王大錘‘) 26 en = England(‘Tom‘) 27 28 ask_someone(ch) 29 ask_someone(en) 30 31
鴨子類型
1、規定有什麽屬性及什麽方法的類的類型叫鴨子類型
2、能提供出規定的屬性與方法的對象就是鴨子
1 class Disk: 2 def read(self): 3 print(‘Disk read‘) 4 5 def write(self): 6 print(‘Disk write‘) 7 8 9 class Memory: 10 def read(self): 11 print(‘Mem read‘) 12 13 def write(self): 14 print(‘Mem write‘) 15 16 17 class Cpu: 18 def read(self): 19 print(‘Cpu read‘) 20 21 def write(self): 22 print(‘Cpu write‘) 23 24 25 obj1=Disk() 26 obj2=Memory() 27 obj3=Cpu() 28 29 obj1.read() 30 obj2.read() 31 obj3.read()
面向對象——多態和多態性