深刻類和對象---鴨子類型和多態

當看到一隻鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那麼這隻鳥就能夠被叫作鴨子。

1.多個類中定義同一個方法,調用時就能夠實現多態

例子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'~~ ~~]
相關文章
相關標籤/搜索