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

关注

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

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

《办公室高潮秘书2》电影| 法国《口咬》电影完整版| 美女热舞| 《囚禁空姐》电影免费观看| 蜜桃免费观看电视剧高清完整版| 姨母妈9| 卢致亘| 他扒开我小流添我三男一女视频| 双人床上做运动后排有伤害吗| 扌暴辶鬲的资料双男主 | 美女和帅哥一起努力生产豆浆| 野东西2| 女友小雪被房东老板玩| 上门女婿一母三女全文免费阅读| 国产精品亚洲AV三区八戒漫画| 九九在线观看免费播放大全电视剧 | 法国《监狱伦理3》| 《再来一次好吗》免费观看| 女教师免费观看全集电视剧| 引诱亲女乱第24部分阅读| 成色18K1835MB| 《军舰上的女兵》法国版完整版 | XXXXX做受大片视频麻豆0| 韩国我是歌手| 吃瓜| 老公不在我和公发| 日韩电影| 成色18K1.220.38软件| 《教授与女学生》伦理| 小俊在雪姨身上耕耘小说免费阅读| 国产少女免费观看电视剧大全| 昊梦梦主人请好好疼爱里面动画第二季| 桃色| 大染坊续集45集完整版免费观看| 免费网站在线观看大全电视剧| 中文在线字幕免费观看电视剧 | 在线天堂WWW在线观看图片| 苍老师40集全免费播放| CSGO暴躁妹妹免费观看电视剧 | 少女哔哩唑哩免费高清观看2| 第1章饱满的乳峰喷奶水动漫