博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python--day25--面向对象之多态
阅读量:6912 次
发布时间:2019-06-27

本文共 947 字,大约阅读时间需要 3 分钟。

多态(Python天生支持多态)

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

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

1 import abc 2 class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 3     @abc.abstractmethod 4     def talk(self): 5         pass 6  7 class People(Animal): #动物的形态之一:人 8     def talk(self): 9         print('say hello')10 11 class Dog(Animal): #动物的形态之二:狗12     def talk(self):13         print('say wangwang')14 15 class Pig(Animal): #动物的形态之三:猪16     def talk(self):17         print('say aoao')

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

import abcclass File(metaclass=abc.ABCMeta): #同一类事物:文件    @abc.abstractmethod    def click(self):        passclass 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不重尚多态

转载于:https://www.cnblogs.com/xudj/p/9919957.html

你可能感兴趣的文章
调用系统相机相冊
查看>>
最简单的视音频播放演示样例7:SDL2播放RGB/YUV
查看>>
vector draw 试用期结束的 激活方法
查看>>
Oracle数据库软件标准版的一个限制:仅仅能用一个rman channel
查看>>
docker官方文档中的dns,link,expose,publish
查看>>
使用 redis “捕捉” “用户登录过期” 事件
查看>>
MyEclipse 8.5安装Aptana
查看>>
C#动态对象(dynamic)示例(实现方法和属性的动态)
查看>>
Objective-C之成魔之路【8-訪问成员变量和属性】
查看>>
支付宝支付-常用支付API详解(查询、退款、提现等)
查看>>
windows下查看特定端口被什么程序占用
查看>>
JSON.parse()与JSON.stringify()的区别
查看>>
1032. Sharing (25)
查看>>
JSP的隐藏对象
查看>>
2014秋C++ 第8周项目 分支程序设计
查看>>
[pig] pig 基础使用
查看>>
java中的线程同步
查看>>
Does the parameter type of the setter match the return type of the getter?
查看>>
MongoDB count distinct group by JavaAPI查询
查看>>
Java多线程系列——原子类的实现(CAS算法)
查看>>