多态的关键在于多,鸭子类型的又是啥?

来源:4-1 鸭子类型和多态

慕粉1628304750

2020-07-20

以前学函数的时候,有一个局部变量,两个/多个函数用同一个名字的局部变量的名称,是没有影响的,只要不宣称成全部变量就OK。class也一样嘛,同个eat,在猫啊猪啊狗啊人啊的class中,都可以有方法eat,猪是站着吃饭,人是坐着吃饭,狗有时候是蹲着吃,这就是多态嘛。

当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”这一段话的关键字是“像”,虽然是像,那肯定有一个标的,比如小明像他爸,那他爸就是标的,要首先找出他爸来,找不出他爸,一切白搭是不?

我理解是,奇迹来了,整个鸭子类型,和鸭子的形状没有关系,找比较的标的也没有,就是不同的对象,通过方法改造一下,然后大家看起来比较像?

若要用class,就要知道它的类型,有啥特性,对不上就要用魔法函数来改,

写回答

2回答

bobby

2020-07-22

  1. 上面理解的多态不准确, 你上面说的是封装和继承,不是多态,多态是 允许将子类类型的指针赋值给父类类型的指针,因为python是动态语言 就不受类型的限制,所以python语言没有多态-也可以说python是天然的多态

  2. 鸭子类型是说一个类是什么类型,不是看这个类继承了什么类,而是看这个类有什么方法

1
0

东泽XD

2020-07-23

能像鸭子一样游泳就是鸭子

0
0

Python3高级核心技术97讲,高级进阶的必学课程

socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO

2121 学习 · 551 问题

查看课程