多态(Python天生支持多态)

多态指的是一类事物有多种形态

动物有多种形态:人,狗,猪

 import abc
class Animal(metaclass=abc.ABCMeta): #同一类事物:动物
@abc.abstractmethod
def talk(self):
pass class People(Animal): #动物的形态之一:人
def talk(self):
print('say hello') class Dog(Animal): #动物的形态之二:狗
def talk(self):
print('say wangwang') class Pig(Animal): #动物的形态之三:猪
def talk(self):
print('say aoao')

文件有多种形态:文本文件,可执行文件

import abc
class File(metaclass=abc.ABCMeta): #同一类事物:文件
@abc.abstractmethod
def click(self):
pass class Text(File): #文件的形态之一:文本文件
def click(self):
print('open file') class ExeFile(File): #文件的形态之二:可执行文件
def click(self):
print('execute file')

多态的表现形式:

鸭子类型:(Python中有鸭子类型,而其他语言如Java没有,所以Python不重尚通过继承对代码进行规范,Python重尚鸭子类型,就像list和tuple这两个这么相似的数据类型都没有用继承---可作为面试时面试官叫你解释一下设计模式接口类的回答)

例子的代码中List和Tuple就是鸭子类型:

ps:python不重尚多态

最新文章

  1. JavaScript函数表达式
  2. 如何安装mysql服务
  3. HTML5和CSS3基础教程(第8版)-读书笔记(3)
  4. POJ 3416 Crossing --离线+树状数组
  5. Unix网络编程(迭代服务器)
  6. ios中javascript直接调用oc代码而非通过改变url回调方式(转)
  7. css垂直水平居中方案
  8. CAS单点登录配置[1]:准备工作
  9. Android中自定义属性的使用
  10. 2017-2-17 c#基础学习 (控制台程序的创建,输出,输入,定义变量,变量赋值,值覆盖,值拼接,值打印)
  11. PHP实现邮件的自动发送
  12. 2018牛客网暑假ACM多校训练赛(第八场)H Playing games 博弈 FWT
  13. DataGridView 使用精华
  14. 关于error:Cannot assign to 'self' outside of a method in the init family
  15. 从高版本JDK换成低版本JDK报错Unsupported major.minor version 52.0的解决方案
  16. c++ 将容量设置为容器的长度(shrink_to_fit)
  17. float数据在内存中存储方式
  18. 一个通用的JavaScript分页
  19. 139.00.007 Git学习-Cheat Sheet
  20. Centos7下lamp环境搭建的小笔记

热门文章

  1. .net core/.net 使用 CommandLineParser 来标准化地解析命令行
  2. VisualVM介绍使用
  3. mysql各个引擎区别
  4. MaxCompute推出面向开发者的专属版本,普惠大数据开发者
  5. noip考前模板复习
  6. Bootstrap —— tab切换
  7. D3D10/11中的遮挡查询的使用
  8. CSS user-select文本是否可复制
  9. 笔记:OSAL st 宏学习 do { x } while (__LINE__ == -1)
  10. day39-Spring 13-Spring的JDBC模板:默认连接池的配置