A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

            “鸭子类型”是动态语言,它并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子”,那它就可以被看做是鸭子。            要了解动态语言,先来看看静态语言,用java来说吧。

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


而他们共同的结果都是:

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

更多图片 小图 大图
组图打开中,请稍候......

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马