黑马程序员技术交流社区

标题: Python中的动态语言“鸭子类型” [打印本页]

作者: 黑马灬丶    时间: 2018-8-9 19:45
标题: Python中的动态语言“鸭子类型”
            “鸭子类型”是动态语言,它并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子”,那它就可以被看做是鸭子。            要了解动态语言,先来看看静态语言,用java来说吧。

在这里例子里,run_twice()方法里传入的Animals()类型的参数,其中Cat(),Dog(),Tortoise()分别都是Animals类的子类,在这里调用方法是体现了多态的性质。
而对于Python这样的动态语言,不一定要传入一个Animals对象,只需要传入的对象有一个run()方法就行了。在这里的两个.py代码分别对于run_twice()方法传入了两种参数,但是能达到同样的目的。


而他们共同的结果都是:

        对于这个方法,如果写在类中,只是说明派生的子类都能继承这个方法。而写在父类外面,说明只是单纯传入的数据类型拥有run()方法,体现了动态语言的鸭子特征。任何定义拥有run方法的类以及他的子类,都可以来使用run_twice()这个函数。
       而对于java语言,作为静态语言就没有这样的特性。
         

小Q截图-20180809192757.png (28.36 KB, 下载次数: 10)

小Q截图-20180809192757.png

小Q截图-20180809191744.png (19.13 KB, 下载次数: 14)

小Q截图-20180809191744.png

小Q截图-20180809191455.png (18.89 KB, 下载次数: 48)

小Q截图-20180809191455.png

小Q截图-20180809191802.png (2.77 KB, 下载次数: 10)

小Q截图-20180809191802.png





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2