当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就能够被叫作鸭子。
例子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'~~ ~~]