专栏首页python3Python——多态

Python——多态

        Python作为一门面对对象的语言,那么肯定也是有多态这个属性的,这里主要跟C++的多态做一下类比

        先看下面的代码

这里可以看到,Child,Child2都是Parent的子类,他们分别重写了父类的print_func函数,因此可以看到下面的结果

        这是单独打印每个对象来得到的结果,下面开始看Python的多态

        这里可以看到,print_who这个函数只是将obj对象的print_func函数调用打印了一下。这里和C++的多态都是区别不大的。

        但是Python的多态比C++的更要牛逼一些,比如下面这个类

        这时候noChild这个类跟Parent没有半点关系,那么我们调用print_who还能打印出来东西吗?

 没错,你真的没有看出,这个非子类的对象,只是因为有一个print_func函数,就能通过print_who来进行打印,是不是很神奇??

        这就是Python与C++在多态上最大的区别,Python只要你有一模一样的函数存在,那么他就可以按照多态的处理方式来给你处理。在有些书中,这个方法被称为“鸭子模型”。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 编程问题求助小技巧

    不经意见,又写了一个bug,不仅如此,还不知道为什么出现这样的bug。于是你准备求助另外一个写bug的人。

    编程珠玑
  • 【算法随记六】一段Matlab版本的Total Variation(TV)去噪算法的C语言翻译。

      最近看到一篇文章讲IMAGE DECOMPOSITION,里面提到了将图像分为Texture layer和Structure layer,测试了很多方法,对...

    用户1138785
  • 「类与对象」如何准确获取对象的内存大小?

    在上篇文章「类与对象」揭秘本质的第一步中,揭秘NSObject类的底层数据结构,如下所示:

    Jacklin
  • C语言生成固定范围的随机数

    本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn

    仙士可
  • 「类与对象」揭秘本质的第一步

    若想了解Objective-C一些API具体实现以及一些对象真实的数据结构等,就需要将Objective-C语言转化成C/C++语言。

    Jacklin999
  • 95个可见字符生成的6位密码词典有多大?

    -rw-r--r-- 1 root root4.7TApr 14 07:41 /data3/ccc.txt

    我爱你的一诺
  • 计算机基础系列:源代码如何被计算机执行

    现在各行各业的朋友都开始使用计算机解决自己的业务问题,网络上有大量的免费公开课,教我们处理数据并数学建模。Python等编程语言上手快,开源软件多,足以应付绝大...

    PP鲁
  • 深入理解Linux C语言内存管理

     问题不能拖,我这就来学习一下吧,争取一次搞定。 在任何程序设计环境及语言中,内存管理都十分重要。

    用户6754675
  • php的各种 I/O流 以及用法

    或许有人看到这个会懵逼,这是什么东东?这有啥用?这咋用?我是谁?我在哪?我要去往何处?

    仙士可
  • 工控CTF之某固件分析解题

    在2019年工业信息安全技能大赛第一场线上赛中有一道固件分析的题目,当时虽然Get到了答案,却终归是知其然不知其所以然,于是决定搭个环境来完整分析一下,顺便学习...

    FB客服

扫码关注云+社区

领取腾讯云代金券