400-650-7353
您所在的位置:首页 > IT干货资料 > python > 【Python基础知识】Python鸭子类型

【Python基础知识】Python鸭子类型

  • 发布: 优就业it培训
  • 来源:优就业
  • 2021-06-18 18:12:27
  • 阅读()
  • 分享
  • 手机端入口

由一个示例引入鸭子类型:

  1. >>> class Person:   # 人类 
  2. ...     def walk(self):   # 走路 
  3. ...         print('this man is walking like a duck'
  4. ...     def swim(self):   # 游泳 
  5. ...         print('this man is swimming like a duck'
  6. ...  
  7. >>> class Duck:   # 鸭类 
  8. ...     def walk(self):   # 走路 
  9. ...         print('duck is walking'
  10. ...     def swim(self):   # 游泳 
  11. ...         print('duck is swimming'
  12. ...  
  13. >>> def swimming(arg): 
  14. ...     # 定义实例实现游泳功能 
  15. ...     arg.walk() 
  16. ...     arg.swim() 
  17. ...  
  18. >>> person = Person()   # 创建Person类实例person 
  19. >>> duck = Duck()   # 创建Duck类实例duck 
  20. >>> swimming(person)   # 调用的是Person类中的walk()和swim() 
  21. this man is walking like a duck 
  22. this man is swimming like a duck 
  23. >>> swimming(duck)   # 调用的是Duck类中的walk()和swim() 
  24. duck is walking 
  25. duck is swimming 

上述程序中,定义了两个类,分别为Person类和Duck类。这两个类具有同名的两个方法walk()和swim()。为了方便对相同方法的类进行统一管理,创建了一个函数swimming(),其参数是一个实例。创建Person类实例person和Duck类实例duck,然后分别调用swimming()函数,参数是person和duck,这样就通过swimming()函数分别调用了两个类中的walk()和swim()方法。如果Person类和Duck类中还有eat()和say()等多个方法,那么也可以放入swimming()函数中,通过它来调用,这样就不需要采用类的实例分别调用每一个方法,从而提高了效率。

下面是一个使用鸭子类型的示例。先创建Car类,类中包含实例属性color,实例方法run(),代码如下:

  1. >>> class Car: 
  2. ...     def __init__(self, color): 
  3. ...         self.color = color 
  4. ...     def run(self): 
  5. ...         print('{}小汽车在跑'.format(self.color)) 
  6. ...  

再创建 Cat类,类中包含实例属性name,实例方法run(),代码如下:

  1. >>> class Cat: 
  2. ...     def __init__(self, name): 
  3. ...         self.name = name 
  4. ...     def run(self): 
  5. ...         print('猫咪{}在跑'.format(self.name)) 
  6. ...  

然后创建公共函数get_run(),调用run()方法,代码如下:

  1. >>> def get_run(obj): 
  2. ...     obj.run() 
  3. ...  

最后实例化,创建Car类实例car并传递参数'红色',创建Cat类实例cat并传递参数'警长',分别以实例car和cat作为参数,使用公共函数get_run()调用实例方法run(),代码如下:

  1. >>> car = Car('红色'
  2. >>> cat = Cat('警长'
  3. >>> get_run(car) 
  4. 红色小汽车在跑 
  5. >>> get_run(cat) 
  6. 猫咪警长在跑 

通过以上示例可知,鸭子类型增加了程序的灵活性和可扩展性,提高了代码的复用性。鸭子类型与多态的区别是,鸭子类型不依靠继承,而多态依靠继承,多态功能的实现是方法的重写。

文章“【Python基础知识】Python鸭子类型”已帮助

更多内容

>>本文地址:https://www.ujiuye.com/zhuanye/2021/69062.html

THE END  

声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。

1 您的年龄

2 您的学历

3 您更想做哪个方向的工作?

获取测试结果
  • 大前端大前端
  • 大数据大数据
  • 互联网营销互联网营销
  • JavaJava
  • Linux云计算Linux
  • Python+人工智能Python
  • 嵌入式物联网嵌入式
  • 全域电商运营全域电商运营
  • 软件测试软件测试
  • 室内设计室内设计
  • 平面设计平面设计
  • 电商设计电商设计
  • 网页设计网页设计
  • 全链路UI/UE设计UI设计
  • VR/AR游戏开发VR/AR
  • 网络安全网络安全
  • 新媒体与短视频运营新媒体
  • 直播带货直播带货
  • 智能机器人软件开发智能机器人
 

快速通道fast track

近期开班时间TIME