python基础之多态
作者:qianqqqq_lu 时间:2022-04-05 10:06:06
多态
多态:顾名思义九四多种形态\状态,就是同一种行为对不同的子类[对象]有不同的行为表现
要想实现多态 必须有两个前提需要遵守:
1.必须存在一种继承关系,必须发生在父类和子类之间
2.重写:子类重写父类的方法
多态的优点:
多态可以增加程序的灵活性
增加程序的扩展性
只要具备某种方法,无论继承者是谁,定义者是谁,都可以去调用
案例演示
class Animal:
def say_who(self):
'''
父类【基类】
:return:
'''
print('你是一个动物')
pass
pass
class Duck(Animal):
'''
继承于animal这个类 鸭子类【子类】派生类
'''
def say_who(self):
'''
在这里重写父类的方法
:return:
'''
print('我是鸭鸭丫')
pass
class Dog(Animal):
def say_who(self):
print('只是一只汪罢了')
pass
pass
duck1=Duck()
duck1.say_who()
dog=Dog()
dog.say_who()
class Animal:
def say_who(self):
'''
父类【基类】
:return:
'''
print('你是一个动物')
pass
pass
class Duck(Animal):
'''
继承于animal这个类 鸭子类【子类】派生类
'''
def say_who(self):
'''
在这里重写父类的方法
:return:
'''
print('我是鸭鸭丫')
pass
class Dog(Animal):
def say_who(self):
print('只是一只汪罢了')
pass
pass
# 使用统一的函数去调用
def commonInvoke(obj):
'''
同意调用的方法
:param obj: 对象的实例
:return:
'''
obj.say_who()
# duck1=Duck()
# duck1.say_who()
# dog=Dog()
# dog.say_who()
listObj=[Duck(),Dog()]
for item in listObj:
'''
循环调用函数
'''
commonInvoke(item) #通过函数统一调用
增加新类完全无需修改代码,只需将需要的代码添加上就是了
# 案例演示
class Animal:
def say_who(self):
'''
父类【基类】
:return:
'''
print('你是一个动物')
pass
pass
class Duck(Animal):
'''
继承于animal这个类 鸭子类【子类】派生类
'''
def say_who(self):
'''
在这里重写父类的方法
:return:
'''
print('我是鸭鸭丫')
pass
class Dog(Animal):
def say_who(self):
print('只是一只汪罢了')
pass
pass
class Bird(Animal):
def say_who(self):
print('门前大桥下,停着一只鸟')
# 使用统一的函数去调用
def commonInvoke(obj):
'''
同意调用的方法
:param obj: 对象的实例
:return:
'''
obj.say_who()
# duck1=Duck()
# duck1.say_who()
# dog=Dog()
# dog.say_who()
listObj=[Duck(),Dog(),Bird()]
for item in listObj:
'''
循环调用函数
'''
commonInvoke(item) #通过函数统一调用
来源:https://blog.csdn.net/weixin_44632711/article/details/120696257
标签:python,基础,多态


猜你喜欢
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2022-10-24 05:34:54

ORACLE常见错误代码的分析与解决(三)
2024-01-25 12:26:01
IA学习笔记02:组织体系
2009-06-12 12:22:00

golang 调用c语言动态库方式实现
2024-05-22 17:51:02
python2.7 mayavi 安装图文教程(推荐)
2022-05-12 05:39:13

对python中大文件的导入与导出方法详解
2021-02-11 12:32:47
Django中日期时间型字段进行年月日时分秒分组统计
2023-01-05 02:26:09

Python pandas中apply函数简介以及用法详解
2022-05-11 03:44:47

用Python的Django框架来制作一个RSS阅读器
2023-01-31 19:17:33

用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2021-04-26 22:34:55

python编写朴素贝叶斯用于文本分类
2022-01-29 18:45:51

win7系统安装SQLServer2000的详细步骤(图文)
2024-01-27 02:39:26

pandas中DataFrame重置索引的几种方法
2023-06-10 00:26:45
在Python中使用成员运算符的示例
2023-12-12 01:36:20

python 列表元素左右循环移动 的多种解决方案
2023-06-15 06:21:45

解决idea打开窗口/tab过多导致隐藏的问题
2022-12-29 10:45:42

简述Redis和MySQL的区别
2024-01-25 01:18:34
MySQL数据库卸载的完整步骤
2024-01-13 13:12:52

python3 面向对象__类的内置属性与方法的实例代码
2023-03-24 10:03:19
浅谈django开发者模式中的autoreload是如何实现的
2022-04-03 17:22:04