• 接口类和抽象类


    python中接口类和抽象类没有严格区分,如果要创建一个接口或抽象类,只需要做一些修饰:

    在抽象方法前加@abstractmethed,该类的子类就必须定义(重写)该方法。

    鸭子类型

    调用不同的子类将会产生不同的行为,而无须明确知道这个子类实际上是什么,这是多态的重要应用场景。

    但python是动态数据类型语言,多态的应用就不那么广泛。

    鸭子类型是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定

    的接口,而是由"当前方法和属性的集合"决定。例如,在不使用鸭子类型的语言中,我们可以编写一个函数,

    它接受一个类型为"鸭子"的对象,并调用它的"走"和"叫"方法。在使用鸭子类型的语言中,这样的一个函数可

    以接受一个任意类型的对象,并调用它的"走"和"叫"方法。如果这些需要被调用的方法不存在,那么将引发一

    个运行时错误。任何拥有这样的正确的"走"和"叫"方法的对象都可被函数接受的这种行为引出了以上表述。

    例如,如果一个对象实现了__getitem__方法,那python的解释器就会把它当做一个collection,就可以在

    这个对象上使用切片,获取子项等方法;如果一个对象实现了__iter__next方法,python就会认为它是一

    iterator,就可以在这个对象上通过循环来获取各个子项。

  • 相关阅读:
    16/3/16 实验回顾总结
    学习进度条
    实验一 命令解释程序的编写
    了解和熟悉操作系统
    0302思考并回答一些问题
    一个礼拜开发出一个栏目(总结/反思)
    如何获取继承中泛型T的类型
    用js判断页面是否加载完成
    读取文件之<绝对路径>与<相对路径>
    JSON--List集合转换成JSON对象
  • 原文地址:https://www.cnblogs.com/cky-2907183182/p/11368674.html
Copyright © 2020-2023  润新知