国产成人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() 方法。

关注

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

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

水蜜桃| 杓怎么读| 东北老肥熟口味重的原因分析 | 《一滴都不许漏》何泽城林荫| 男生困困进女生困困洞视频| 《年轻朋友的妻子3》| 爸爸你真棒插曲快来救救我小说| 《酒店激战》动漫1-5集免费观..| 《饥渴的人妻日本》中字| 火车上荫蒂添的好舒服电影| 伦理《禁忌6》| 快拨出天我是你母亲歌词监控| 《两个儿媳》大结局| 穿黑色蕾丝透明胸罩说明什么| 男奴调教赤裸跪爬服传| 《李瓶儿之真爰无悔》| 国产一区二区三区| 太硬了…轻点…嗯嗯灬小俊| 《年轻朋友的妻子3》| 《疯狂72小时》韩剧| 含着奶做着爱太舒服了| 办公室刺激战场第二季在线观看 | 《黑人性奴2》免费观看| 双龙戏珠3父子免费阅读全文| 大叔和妈妈免费观看电视剧第3集| 美女两个球球抖动抓球球视频| 黑人空乘伦理5| 免费视频在线观看人数在哪直播| 法国色情巜卧室肉欲| 女生干多了腿中间会变宽吗| 孤男寡女免费观看高清电视剧狂飙| .《李瓶儿之真爱无悔》| 来吧儿子妈妈是纯还是混 | 老师好爽要尿了潮喷了18P| 少妇被大黑捧猛烈进出动态图| 国产少女免费观看电视剧大全| 樱花视频在线观看免费高清电视剧| 杀妻同盟军| 特殊按摩治疗师| CSGO暴躁妹妹高清| 汗汗画画免费阅读在线阅读