当前位置: 首页 > 后端技术 > Python

深入类和对象---鸭子类型和多态性

时间:2023-03-25 20:44:28 Python

当你看到一只鸟,走路像鸭子,游泳像鸭子,叫声像鸭子,那么这只鸟就可以称为鸭子。1.在多个类中定义同一个方法,调用实例1时可以实现多态adog')classDuck:defsay(self):print('Iamaduck')animal_list=[Cat,Dog,Duck]foranimalinanimal_list:animal().say()所有的类和对象都是一样的方法实现,方法名相同,这些类在Python中可以归为一类实现多态,只需要实现相同的方法例子2name_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,不同版本会有差异),源代码中的注释是:Extendthelistbyappendingtheele可迭代对象中的注释。因此,此方法中的参数可以是任何可迭代对象defextend(self,*args,**kwargs):#realsignatureunknown"""通过附加可迭代对象中的元素来扩展列表。"""passname_list1.extend(name_tuple)print(name_list1)#>>>['zjx1','zjx2','zzz1','zzz2']name_list1.extend(name_set)print(name_list1)#>>>['zjx1','zjx2'','jjj1','jjj2'~~~~]