国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python高级 > 一文带你了解python中的多态

一文带你了解python中的多态

头像

silencement

2020-03-05 22:24:353027浏览 · 0收藏 · 0评论

我们都知道,Python 是弱类型语言,其最明显的特征是在使用变量时,无需为其指定具体的数据类型。这会导致一种情况,即同一变量

可能会被先后赋值不同的类对象,例如:

class CLanguage:
    def say(self):
        print("赋值的是 CLanguage 类的实例对象")
class CPython:
    def say(self):
        print("赋值的是 CPython 类的实例对象")
a = CLanguage()
a.say()
a = CPython()
a.say()

运行结果为:

赋值的是 CLanguage 类的实例对象
赋值的是 CPython 类的实例对象

可以看到,a 可以被先后赋值为 CLanguage 类和 CPython 类的对象,但这并不是多态。类的多态特性,还要满足以下 2 个前提条件:继承:多态一定是发生在子类和父类之间;重写:子类重写了父类的方法。

下面程序是对上面代码的改写:

class CLanguage:
    def say(self):
        print("调用的是 Clanguage 类的say方法")
class CPython(CLanguage):
    def say(self):
        print("调用的是 CPython 类的say方法")
class CLinux(CLanguage):
    def say(self):
        print("调用的是 CLinux 类的say方法")
a = CLanguage()
a.say()
a = CPython()
a.say()
a = CLinux()
a.say()

执行结果

调用的是 Clanguage 类的say方法
调用的是 CPython 类的say方法
调用的是 CLinux 类的say方法

可以看到,CPython 和 CLinux 都继承自 CLanguage 类,且各自都重写了父类的 say() 方法。从运行结果可以看出,同一变量 a 在执行同一个 say() 方法时,由于 a 实际表示不同的类实例对象,因此 a.say() 调用的并不是同一个类中的 say() 方法,这就是多态。

但是,仅仅学到这里,读者还无法领略 Python 类使用多态特性的精髓。其实,Python 在多态的基础上,衍生出了一种更灵活的编程机制。

继续对上面的程序进行改写:

class WhoSay:
    def say(self,who):
        who.say()
class CLanguage:
    def say(self):
        print("调用的是 Clanguage 类的say方法")
class CPython(CLanguage):
    def say(self):
        print("调用的是 CPython 类的say方法")
class CLinux(CLanguage):
    def say(self):
        print("调用的是 CLinux 类的say方法")
a = WhoSay()
#调用 CLanguage 类的 say() 方法
a.say(CLanguage())
#调用 CPython 类的 say() 方法
a.say(CPython())
#调用 CLinux 类的 say() 方法
a.say(CLinux())

程序执行结果为:

调用的是 Clanguage 类的say方法
调用的是 CPython 类的say方法
调用的是 CLinux 类的say方法

此程序中,通过给 WhoSay 类中的 say() 函数添加一个 who 参数,其内部利用传入的 who 调用 say() 方法。这意味着,当调用 

WhoSay 类中的 say() 方法时,我们传给 who 参数的是哪个类的实例对象,它就会调用那个类中的 say() 方法。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

《漂亮的女邻居5》HD| 午马影视免费观看电视剧 | 麻豆免费无码AV在线播放| 蜜汁樱桃》笔趣阁全文免费阅读 | 半插和全插有什么区别| 法国空乘伦理2| 女人脱精光让人桶爽了| 太太你想丈夫被开除吧| 《不戴套瑜伽教练3》| BOBO浏览器老司机模式改版特..| 玉蒲团之官人我要| 《帐篷里的秘密》动漫| 他的大手在秘密花园游走漫画 | お母さんは母のがいない怎么读| 女仆| 妈妈洗澡不把门关紧暗示什么| 《太太你想丈夫被开除吧》| 《性旺盛的女人》HD| 《湿点》未增减板相似| 51成人免费A片毛片无码| 肉多到炸的年下小狗(双南)| 《公与媳夫妇:交换》| 小雪解开乳罩给老杨摸| 亚洲日韩AV精品一区二区| 军营里饱满的乳被揉捏玩弄| 外国大片又大又好看的PPT | 享乐网| 黑瓜网每日大赛最新一期免费观看 | 恋爱之瘾| 男女啪啪做爰高潮全过有多动症| 《交换做爰》在线观看| 小雪被老汉各种姿势玩弄视频| PPT成品网站1688免费| 欧洲尺码和亚洲码是3D还是2D | 女士穿紧身裸体开裆光滑皮裤| 小妈爱上继子免费观看电视剧| 国外成品网站1688入口在哪| 黄金网站软件APP| 可儿的奶水喂爸爸吃可以吗| 想爱就爱2| 男朋友摸完小花园小肚子有点痛