• 面向对象总结


    面向对象总结

    基础概念

    • 类——具有相同方法和属性的一类事物
    • 对象、实例——一个用用具体属性值和动作的具体个体
    • 实例化——从一个类得到一个具体对象的过程

    组合

    • 一个类的对象作为另一个类的实例变量
    • python是课程类的对象
    • 晶晶是学生类的对象
    • 晶晶.course = python
    • 学生和课程便产生了一种组合

    三大特性

    • 封装
      • 广义的封装:类中的成员
      • 狭义的封装:私有成员
        • __名字
          • 只能在类的内部使用,既不能类的外部调用,也不能在子类中使用
          • 类名__名字
    • 继承
      • 所有的查找名字(调用方法和属性),都是先找自己的,自己没有的找父类的,如果自己和父类都累,希望自己和父类都调用,可以用super()/指定类名直接调用
      • 父类、基类、超类
      • 派生类、子类
      • 多继承
        • 查找顺序
        • 深度优先——python2
        • 广度优先——python3
      • 单继承——子类可以调用父类的方法
        • 查找顺序
    • 多态
      • 一个类表现出的多种状态-------->多个类表现出的相似状态
        • user类 用户类
          • vip_user
            • 完成支付功能
            • 浏览山商品
          • svip_user
            • 完成支付功能
            • 浏览山商品
      • 鸭子类型
        • vip_user和svip_user
        • list和tuple

    类成员

    • 特殊成员
      • 类成员
      • 绑定方法
      • 特殊方法
        • 类方法 classmethod——将原本对象调用的方法变为类调用的方法
        • 静态方法 staticmethod——将普通函数挪到类里
        • 属性 property——将普通方法伪装成属性

    双下方法/魔术方法/内置方法

    • _srt_
    • __new__构造方法
    • __init__初始化方法
    • __dict__属性
    • _call_ 源码中很容易写这样的方法
    • _enter _exit_ with上下文管理
    • _getitem
    • _settitm_
    • _delitem_
    • __add__两个对象相加
    • _iter_
    • _dict_

    相关内置函数

    • isinstance——对象和 类的关系
    • issubclass——类和类的关系
    • type——类型 类 = type(对象)/平常皆为内置
    • super——遵循mro顺序查找上一个类的

    新式类和经典类

    • py2继承object就是新式类

    • 默认是经典类

    • py3都是新式类,默认继承object

    • 新式类

      • 继承object
      • 支持super
      • 多继承 广度优先:C3算法
      • mro方法——可以通过mro算法看继承顺序D.mro()
    • 经典类

      • py2中不继承object
      • 没有super语法
      • 多继承 深度优先
      • 没有mro方法
    记录学习的点点滴滴
  • 相关阅读:
    浅析VO、DTO、DO、PO的概念、区别和用处
    serialVersionUID的作用
    Eclipse Debug提示source not found解决方案
    eclipse的块选择模式
    Java工程Properties配置文件注释中文,会自动转换为其他编码方式问题解决 中文乱码
    spring boot1.5以上版本@ConfigurationProperties取消location注解后的替代方案 cannot resolve method location
    c++11多线程
    多媒体指令(AVX加速数组求和)
    oracle数据库occi接口写入中文乱码解决方法
    c++得到窗口句柄
  • 原文地址:https://www.cnblogs.com/yangzilaing/p/14878346.html
Copyright © 2020-2023  润新知