• python中的多态


    面向对象有封装,继承,多态三大特性,我们在这里主要介绍python中的多态.

    多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术内幕”)。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。多态性在Object Pascal和C++中都是通过虚函数实现的。

    上面所说的多态必须是在有继承的前提下,然而python中的多态却也可以继承就实现多态.

    先来看一个有继承版的多态,传入函数fun中的对象不一样便会产生不同执行效果

    class Animal(object):
        def eat(self):
            pass
    
    
    class Dog(object):
        def eat(self):
            print('eat fish')
    
    
    class Cat(object):
        def eat(self):
            print('eat bone')
    
    
    def fun(obj):
        obj.eat()
    
    
    def main():
        fun(Dog())
        fun(Cat())
    
    
    if __name__ == '__main__':
        main()

        但如果我们把Dog和Cat的父类Animal去除掉之后会发现,程序依旧是可以执行的,也就是python中的多态并非是严格意义上的多态,只要对象中存在eat()方法便可以将该对象传入fun中执行.



  • 相关阅读:
    精选PSD素材下载周刊【Goodfav PSD 20130720】
    25个吸引眼球的广告设计
    25个让人无法抗拒的HTML5网站设计实例
    10个非常有用的网页设计工具
    为网页设计师准备的30个使用的HTML5框架
    ElasticSearch
    Dism命令实操
    Bash Shell
    Lua语言学习
    开发命令
  • 原文地址:https://www.cnblogs.com/fanlei5458/p/9235491.html
Copyright © 2020-2023  润新知