美文网首页
3-1鸭子类型与多态

3-1鸭子类型与多态

作者: xgnb | 来源:发表于2019-03-10 21:42 被阅读0次

什么是鸭子类型
维基百科:当你看到一只鸟走起来像鸭子,游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被成为鸭子。
我们所有的类都共同实现了一个方法(方法名一样),这一系列类就可以归为一种类型,在调用他的时候我们就可以同时调用该方法
什么是多态
概念:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。简单的说:就是用基类的引用指向子类的对象。

class Cat:
    def say(self):
        print('i am a cat')


class Dog:
    def say(self):
        print("i am a dog")


class Duck:
    def say(self):
        print("i am a duck")


animal_list = [Cat, Dog, Duck]
for animal in animal_list:
    animal().say()

注意:
在Java中的多态,子类需要继承与同一个父类并且覆盖掉父类的一些方法才能定义多态,这一点与python不同。
在python中我们不需要继承同一个父类只需要实现同一个方法就行了。

加深理解

class Company:
    def __init__(self, employee_list):
        self.employee = employee_list

    def __getitem__(self, item):
        return self.employee[item]

    def __str__(self):
        return '-'.join(self.employee)

# 关于一些类型定义的方法 比如 list中的 extend(接受的类型不止是list)详情看下面

li = ['q', 'w', 'e', 'r']
li_e = ['t', 'y', 'u']
company = Company(['sb', 'is', 'you'])  # 因为定义了__getitem__魔法函数,它变得可迭代

li.extend(li_e)  # extend 可接受的参数类型是 iterable, 所以不仅限于常识中我们所知道只能接收list
print("After first extended----->", li)
print("li will extend company")
li.extend(company)
print("After second extended------>", li)

总结:

严格来说python可实现鸭子类型但是实现不了多态,因为从语言的本身来讲他原生就支持多态。

相关文章

  • 3-1鸭子类型与多态

    什么是鸭子类型维基百科:当你看到一只鸟走起来像鸭子,游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被成为鸭子。我...

  • 第四章 深入类和对象

    一. 鸭子类型和多态 鸭子类型与多态文章详解 如果一个对象实现了__getitem__方法,那python的解释器...

  • 第1章面向对象的Javascript

    面向对象的Javascript 1.1动态类型与鸭子类型 1.2多态 1.2.1一段“多态”的javascript...

  • python高级编程第一讲:深入类和对象

    1.鸭子类型和多态 多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚"鸭子类型" 所谓多态:...

  • python鸭子类型

    抽象类,多态与鸭子类型 - 独角兕大王 - 博客园

  • 多态性与鸭子类型

    一,多态性 多态示例 二,鸭子类型 1,定义 2,示例

  • 多态的意义和操作过程

    多态 首先Python不支持多态,也不用支持多态,python是一种多态语言,崇尚鸭子类型。以下是维基百科中对鸭子...

  • python入门学习笔记之多态与多态性

    本节重点 多态与多态性鸭子类型本节时长需控制在15分钟内 多态 多态指的是一类事物有多种形态,比如 动物有多种形态...

  • python入门系列:深入类和对象

    鸭子类型和多态 引言 在鸭子类型中,关注的不是对象的类型本身,而是它是如何使用的。 例如,在不使用鸭子类型的语言中...

  • 第三章:深入类和对象

    1.鸭子类型和多态 什么是鸭子类型当一只鸟走起路来像鸭子,游泳起来像鸭子,叫起来像鸭子,就可以称这只鸟为鸭子.也就...

网友评论

      本文标题:3-1鸭子类型与多态

      本文链接:https://www.haomeiwen.com/subject/cxgicqtx.html