• 面向对象小结


    面向对象

    概念:是一种编程思想

    核心概念:对象和类

    对象是实际存在的具体技能和属性的结合体

    类是具备相同属性的和技能对象的集合体,是一种抽象概念

    计算机中先有类

    优点:

    扩展性强

    缺点:

    编程复杂度高,无法准确预支执行结果

    使用场景:

    对扩展要求比较高

     

    类的方法

    对象绑定方法 默认 对象调用时会自动传入对象本身

    类绑定方法 类和对象调用都会传入类本身@classmethod

    非绑定方法 就是一个普通函数 不会自动传参@staticmethod

    名称空间和查找顺序

    类也有自己的名称空间

    对象也有自己独立的名称空间 每个对象之间都是独立的

    用对象可以访问到类中的内容

    每个对象不同的就放到对象自己的名称空间 大家都一样放到类中

    顺序: 对象---》类---》父类---》obj---》元类

     

    初始化方法:

    用于给对象的属性附上初始值,或做一些其他的初始化操作

    会在调用类的时候自动执行,并传入对象本身

    必须保证返回值为None

    万物皆对象

    自带的数据类型也是某个类

    三大特性:封装、继承、多态

    封装

    封装:对外部隐藏内部实现细节,提供调用的接口

    目的:保证数据安全,隔离复杂度

    getter setter deleter

    @property == getter

    @属性名称 .setter

    @属性名称 .deleter

    封装的原理,在读取类中代码时,会将带有双下划线的名字换成__类名__属性这样的格式

     

    继承

    继承是一种关系,类与类之间,描述什么是什么的关系

    通过继承,子类可以直接用父类已经存在的内容

    派生

    在继承的基础上,子类出现了父类不存在的内容

    覆盖 overwrite

    子类中出现了父类中一模一样的名字

    抽象

    老师类 姓名 年龄 性别

    学生类 姓名 年龄 性别

    两者看似相似,但不会父子类

    抽象就是抽取多个子类相同的部分,形成一个新的公共父类

    python支持多继承 增加了灵活性,但是带来了不确定性

     

    确定是否是菱形继承

    如果是新式类 广度优先 经典类 深度优先

    使用方式:

    1. 抽象

    2. 继承已经存在的类 扩展新功能

     

    抽象类

    当一个类中存在抽象方法时,类是抽象类

    抽象方法:如果一个方法只有声明,没有实现

    作用:用于强制要求子类必须实现里面某些方法

    抽象类就是为了更好的编写多态性的代码

     

    接口

    与抽象类不同之处在于,接口的所有方法都应该只有声明而没有实现体的

    抽象类中可以有普通方法也可以有抽象方法

     

    子类访问父类的内容

    super().父类的名称

    super(子类名称,self).名称

     

    组合

    也是一种关系 描述的是什么是什么的关系

    继承和组合都是为了提高代码的复用性

     

    多态

    一种事物具备多种形态、

    多个不同类型的对象可以相应一个方法的调用

    不是一直特殊的语法,只要实现了多个不同类型的对象可以相应一个方法调用,那就称之为多态性

    面向对象的扩展

     

    反射

    通过字符串来操作对象的属性和方法

    反省 指对象可以在创建后动态的修改自身的属性和方法

    hasatter setattr getattr delattr

    反射框架设计的基石

     

    元类

    类也是对象

    用于创建类的类就是元类

    默认所有的类的元类都是type

    我们可以继承type实现自己的元类

    目的就是为了控制类的创建过程

     

    __call__ 调用类实例化对象时 自动执行

    __init__ 创建类对象的时候执行

    __new__ 创建对象时,会调用__new__来获得一个空对象,然后调用类中__init__方法进行初始化

    单例模式

    一个类只能产生一个对象

    目的就是为了减少资源开销,当这个类的对象中的数据是共享的时候

     

  • 相关阅读:
    nohup 运行后台程序
    配置了yum本地源
    rhel 6.7 离线安装docker
    java timer 执行任务
    遇到的sql关键字
    mysql事务和锁
    Mysql命令大全
    mysql keepalived
    mysql主从复制
    mysql从binlog恢复数据
  • 原文地址:https://www.cnblogs.com/zrx19960128/p/11226133.html
Copyright © 2020-2023  润新知