浅谈Python之多态与接口,Pyhton有没有多态?

本文探讨了Python是否具有多态性,并解释了Python的多态性与C#等语言的区别。Python的多态性体现在鸭子类型上,允许不同类之间形成继承关系,遵循“如果它看起来像鸭子,走起来像鸭子,它就是鸭子”的原则。文章还预告将介绍Python中的接口概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python有没有多态???这个问题老是被问起来,答案是有的。python这么强大,有什么理由没有多态?

那么我们来看看什么叫多态?
这是C#语言子类对父类的重写
这是C#语言子类对父类的重写,其实不难读懂,一个Car的类继承了Vehicle的父类,而在子类中对Run()方法进行了重写。什么是重写?即子类属性或方法对父类中相同名字的属性或方法进行覆盖这就是重写。
在这里插入图片描述
我们来实例化一个Car,但是你会发现这个Car却是属于Vehicle类的!只学了Python的小伙伴可能会奇怪这是个什么东西??但是我想说这个在C#等语言是可以实现的。这怎么理解?不急,我们来看看。

如果按照前面的代码这个v.Run()得到的结果会是什么呢?答案是Car is running!
因为这个Run()的方法已经被重写了。
在这里插入图片描述
但是这时如果我们把virtual 和 override(这两个修饰词意思是被重写和重写(这里理解为被重写有些片面,因为virtual这个单词意思是虚的,那么我们就应该理解为名存实亡的,因为他已经被重写了,实际上他存不存在都无所谓了)) 去掉,这样得到的就是一个I’m running!,因为这两个方法并不存在重写和被重写的关系,既然v属于Vehicle这个类,那么自然而然的v.Run()得到的就是I’m running!。

这就需要引入一个新的概念了,父类与子类的代差,他们之间对相同方法会有不同的效果,而这就是多态。
所谓多态,基于重写机制,而函数成员的具体行为由对象(实

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值