當看到一隻鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那麼這隻鳥就能夠被叫作鴨子。
例子1app
class Cat: def say(self): print('I am a cat') class Dog: def say(self): print('I am a dog') class Duck: def say(self): print('I am a duck') animal_list = [Cat, Dog, Duck] for animal in animal_list: animal().say()
全部的類和對象都實現的同一個方法,這個方法名同樣,這些類就能夠歸類爲一種類型
在Python中實現多態,只須要實現同樣的方法
例子2code
name_list1 = ['zjx1', 'zjx2'] name_list2 = ['zjx3', 'zjx4'] name_tuple = ('zzz1', 'zzz2') name_set = set() name_set.add('jjj1') name_set.add('jjj2') name_list1.extend(name_list2) print(name_list1) # >>> ['zjx1', 'zjx2', 'zjx3', 'zjx4']
name_list1.extend(name_list2)語句能夠將name_list2中的元素添加到name_list1中查看extend源碼(此處爲3.7,不一樣版本會有差別),源碼中的註釋爲: 經過附加可迭代對象中的元素來擴展列表。
所以該方法中的參數爲任何可迭代的對象都是能夠的對象
def extend(self, *args, **kwargs): # real signature unknown """ Extend list by appending elements from the iterable. """ pass
name_list1.extend(name_tuple) print(name_list1) # >>> ['zjx1', 'zjx2', 'zzz1', 'zzz2'] name_list1.extend(name_set) print(name_list1) # >>> ['zjx1', 'zjx2', 'jjj1', 'jjj2'~~ ~~]