
【Python】面向对象:多态,多态性
发布日期:2021-05-07 23:12:40
浏览次数:26
分类:原创文章
本文共 1541 字,大约阅读时间需要 5 分钟。
1:多态:指的是同一类事物有多种形态
例:动物可存在的形态:人,狗,猪
import abcclass Animal(metaclass=abc.ABCMeta): all_type="animal" @abc.abstractmethod def run(self): passclass People(Animal): def run(self): print('people is running')class Dog(Animal): def run(self): print("Dog is running")class Pig(Animal): def run(self): print("Pig is running")
文件可存在的形态:文本文件,可执行文件
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")
2:多态性:指的是不考虑对象类型的情况下直接使用对象,例如:人狗猪都属于动物类,都有talk的功能,那我就可以直接调用
"""定义动物类:抽象基类:人狗猪,他们都有父类的功能talk"""import abcclass Animal(metaclass=abc.ABCMeta): @abc.abstractmethod def talk(self): passclass People(Animal): def talk(self): print("people is talking!!!!")class Dog(Animal): def talk(self): print("Dog is talking!!!!")class Pig(Animal): def talk(self): print("Pig is talking!!!!")#多态性:指的是在不考虑对象类型的情况下直接使用对象pig=Pig()dog=Dog()people=People()pig.talk()dog.talk()people.talk()# 也可以定义一个函数直接调用:def func(Animal): Animal.talk()func(pig)func(dog)func(people)
最后:
Python崇尚鸭子类型,啥是鸭子类型,也就是:‘如果看起来像、叫声像而且走起路来像鸭子,那么它就是鸭子’
例:
#二者都像鸭子,二者看起来都像文件,因而就可以当文件一样去用class TxtFile: def read(self): pass def write(self): passclass DiskFile: def read(self): pass def write(self): pass
在例如:序列类型有多种形态:字符串,列表,元组,但他们直接没有直接的继承关系。但是都可以使用len来统计大小
这就是Python的多态性,Python的鸭子类型
发表评论
最新留言
不错!
[***.144.177.141]2025年04月11日 01时32分41秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Vue之Element标签页保留用户操作缓存。
2019-03-05
智能合约开发实践(1)
2019-03-05
2. Spring Boot学习——Yaml等配置文件教程
2019-03-05
MATLAB——操作矩阵的常用函数
2019-03-05
CMake自学记录,看完保证你知道CMake怎么玩!!!
2019-03-05
Eigen库中vector.transpose()函数什么意思
2019-03-05
ORB-SLAM2:LocalMapping线程学习随笔【李哈哈:看看总有收获篇】
2019-03-05
ORB-SLAM2:LoopClosing线程学习随笔【李哈哈:看看总有收获篇】
2019-03-05
牛客练习赛56 D 小翔和泰拉瑞亚(线段树)
2019-03-05
hdu6434 Problem I. Count(数论)(好题)
2019-03-05
NC15553 数学考试(线性DP)
2019-03-05
MySQL两阶段提交、崩溃恢复与组提交
2019-03-05
MySQL隐藏文件.mysql_history风险
2019-03-05
如何通过文件解析MySQL的表结构
2019-03-05
ClickHouse 适用场景调研文档
2019-03-05
C++的编译过程及原理
2019-03-05