• 多态,鸭子类型,反射


    多态是OOP的三大特征之一:
    字面意思:多种形态,多种状态
    一个事物具备多种形态
    例子:水:固态,液态,气态
    官方解释:不同对象可以响应(调用)同一个方法 产生不同的结果

    多态不是新技术,我们在编写面向对象的程序时,其实就有多态存在
    对于对象的使用者而言,无需关心对象的具体实现,甚至不用关心具体类型
    极大的降低了使用难度

    鸭子类型:
    python不会强行限制 必须干什么 或不干什么
    就比如封装中的私有属性 你也是可以强行访问的
    同理 在多态中 子类中你可以不适用abc模块
    python崇尚鸭子类型

    如果一个对象 长得像鸭子 叫声像鸭子 走路像鸭子 那么他就是鸭子
    例子:猫长得像动物 叫声像动物 走路像动物 那么他就是动物

    内置方法:
    isinstance:判断一个对象是否是一个类的实例
    print(isinstance(10,int)) = True
    print(isinstance('abc',int)) = False
    issubclass:判断一个类是否是一个类的实例
    class A:
    pass

    class B(A):
    pass
    print(issubclass(B,A)) = True
    print(issubclass(A,B)) = False
    __str__:__str__可以用于定制对象的打印格式,会在print对象时自动触发执行
    使用__str__时要用return返回字符串。
    __del__:__del__在程序运行完毕时自动执行,将对象从内存中删除
    有两种方式触发:1.程序运行完毕时
    2.手动调用del
    作用:用于做一些清理操作 比如开启了文件资源 就需要手动关闭
    使用场景:当你的对象在创建时同时开启了不属于解释器的资源
    就需要在del中来回收资源
    也称之为析构函数 构造

    反射:
    也称为反省
    一个对象具备可以修改自身属性及方法的能力
    从代码级别来看 反射就是通过字符串来操作对象的属性(属性的增删改查)

    hasattr 是否存在某个属性
    getattr 获取某个属性
    setattr 设置或修改属性
    delattr 删除某个属性

  • 相关阅读:
    vue 插件的使用 todolist案例
    vue 传值 混入mixin
    vue 生命周期函数
    vue 指令总结
    vue 其它的指令
    vue 监听数据变化的原理 表单数据的收集
    vue for循环中的key
    vue 学习
    vue 学习
    HDU 1029
  • 原文地址:https://www.cnblogs.com/xiezuodd/p/10413849.html
Copyright © 2020-2023  润新知