当前位置: 首页 > news >正文

python核心编程(二)

python面向对象

  • 一、基本理论
  • 二、 面向对象在python中实践
    • 2.1 如何去定义类
    • 2.2 通过类创建对象
    • 2.3 属性相关
    • 2.4 方法相关
  • 三、python对象的生命周期,以及周期方法
    • 3.1 概念
    • 3.2 监听对象的生命周期
  • 四、面向对象的三大特性
    • 4.1 封装
    • 4.2 继承
      • 4.2.1 概念
      • 4.2.1 目的
      • 4.2.2 分类
      • 4.2.3 type和object区分
      • 4.2.4 继承下的影响
      • 4.3 多态

一、基本理论

	1.什么是对象?万物皆为对象,对象是具体的事物:1. 拥有属性2. 拥有行为3. 把很多零散的东西,封装为一个整体2. python中体现:python是一门特别彻底的面向对象编程(OOP)的语言3. 面向过程&面向对象都是解决问题的思路面向过程:在解决问题的时候,关注的是解决问题的每个过程(步骤)面向对象:在解决问题的时候,关注的是解决问题所需要的对象对比:1. 面向对象和面向过程都是解决问题的一种方式(思想)		面向对象本身是对面向过程的封装2. 面向过程编程最重要的是按照步骤划分,把一个任务,分解成具体的每一个步骤3. 面向对象编程最重要的是划分不同的对象,之后去确定对象的属性和行为4. 如何从面向过程编程思想,过渡到面向对象编程?4.1 先列举出一个任务的具体实现的步骤4.2	试图分离这些实现步骤的功能代码块4.3 将这些功能代码块,划分到某一个对象中4.4 根据整个对象以及对应的行为,抽象出对应的类4.4.1 类:某个具体对象特征的抽象4.2 类的作用:根据抽象的类,生产具体的对象4.3 类的组成:名称属性方法注意:以上属性和方法,都是抽象的概念在产生对象之后,对象才用于具体的属性值,和方法实现对象和类的关系:对象可以抽象为类,类可以实例化对象

二、 面向对象在python中实践

2.1 如何去定义类

class 类名: pass 里面的pass表示一个空语句,为了去保证整个结构的一个完整

2.2 通过类创建对象

变量=类名() 进行实例化

2.3 属性相关

	1. 属性相关1.1 属性和变量的区别及判定依据?区别:1. 概念:变量是”可以改变的量值“属性是”属于某个对象的特性“2. 访问权限:变量:根据不同的位置,存在不同的访问权限属性:只能通过对象来进行访问判定依据:是否存在宿主2. 对象属性2.1  怎样让一个对象拥有一些属性?()1. 直接通过对象,动态添加	对象.属性 =2. 通过类的初始化方法(构造方法)	__init__方法2.2 怎样访问或者修改一个对象的属性?(,)通过对象.属性来进行查询,如果之前没有就是查询,有的话就是修改2.3 怎样删除一个对象的属性?()del 对象.属性补充:查看对象所有属性 对象.__dict__3. 类属性3.1 怎样让一个类拥有属性?()方式1:类名.类属性 = 值方式2:在类里面直接写上变量名3.2 怎样让一个类拥有属性?()方式1:通过类访问,类名.类属性方式2:通过对象访问,对象.类属性注意:通过对象访问到类属性,是和python对象的属性查找机制有关,优先到对象自身去查找属性,找到则结束;如果没有找到,则根据_class_找到对象对应的类,到这个类里面去找。3.3 怎样让一个类拥有属性?()方式1:类名.属性 = 值方式2:对象.__class__.属性 =3.4 怎样让一个类拥有属性?()通过类名删除,del 类名.属性,但是不能通过对象删除,del 语句只删除直系属性。

2.4 方法相关

	1. 方法的概念:描述一个目标的行为动作。2. 方法的划分:2.1 实例方法	默认第一个参数需要接收到一个实例2.2 类方法	默认第一个参数需要接收到一个类2.3 静态方法		第一个参数啥也不默认接收3. 实例方法3.1 标准调用使用实例调用实例方法, 不用手动传,解释器会自动把调用对象本身传递过去。3.2 其他调用1. 使用类调用2. 间接调用4. 类方法4.1 标准调用可以通过类或者用例来调用4.2 其他调用利用子类进行调用5. 静态方法既可以使用类调用或者用例调用补充:实例属性只能通过实例,类属性的话,既可以通过实例或者类进行访问。

三、python对象的生命周期,以及周期方法

3.1 概念

生命周期:指一个对象,从诞生到消亡的过程当一个对象被创建时,会在内存中分配相应的内存空间进行存储当这个对象不再使用,为了节约内存,就会把这对象释放

3.2 监听对象的生命周期

	1. __new__方法当我们创建一个对象时,用于给这个对象分配内存的方法,通过拦截这个方法,可以修改对象的创建过程,比如:单例设计模式2. __init__方法对象创建完成之后,会调用init方法3. __del__方法

四、面向对象的三大特性

4.1 封装

  1. 概念
    将一些属性和相关方法封装都一个对象中,对外部隐藏内部具体实现细节。
  2. 好处
    • 使用起来更加方便
    • 保证数据的安全
    • 有利于代码维护

4.2 继承

4.2.1 概念

继承:一个类“拥有”另外一个类的“资源”的方式之一。

  1. 拥有:并不是资源的复制,变为双份资源,而是资源的“使用权”。
  2. 资源:指“非私有的”属性和方法。

4.2.1 目的

继承的目的就是为了方便资源重用。

4.2.2 分类

  1. 单继承:仅仅继承了一个父类。
  2. 多继承:继承了多个父类。

4.2.3 type和object区分

在这里插入图片描述

4.2.4 继承下的影响

	1. 资源的继承明确:在python中,继承是指资源的使用权,所以,测试某个资源能否被继承,其实就是测试在子类当中,能不呢个访问父类中的这个资源。结论:除了私有的属性和私有的方法,其他基本上都能继承。2. 继承的下的影响2.1 继承几种形态单继承链无重叠的多继承链有重叠的多继承链2.2 几种形态应该遵循的标准规则2.2.1 单继承遵循“从上到下的原则”,自己身上没有这个资源,就到父类里面去找,父类再没有,再往上走。2.2.2 无重叠的多继承按照继承的先后次序,优先调用左侧继承链上的属性或者方法.2.2.3 有重叠的多继承遵循“从上到下的原则”。2.3 资源的覆盖(属性和方法)在MRO的资源检索链当中,优先级比较高的类写了一个和优先级比较低的类一样的一个资源(属性或方法),到时候,再去获取相关资源,就会优先选择优先级比较高的资源,而摒弃优先级比较低的资源,造成“覆盖”的假象

4.3 多态

	多态:一个类,所延伸的多种形态。调用时多种形态:在继承的前提下,使用不同的子类,调用父类的同一个方法,产生不同的功能。
http://www.lryc.cn/news/354650.html

相关文章:

  • 【wiki知识库】02.wiki知识库SpringBoot后端的准备
  • python tuple(元组)
  • opencv调用摄像头保存视频
  • STM32定时器四大功能之定时器编码接口
  • 全国各城市间驾车耗时和距离矩阵数据集(更新至2022年)
  • 推荐二轮电动车仪表盘蓝牙主芯片方案-HS6621CGC
  • 『香橙派』基于Orange Pi AIpro打造高效个人云存储解决方案
  • Sylvester矩阵、子结式、辗转相除法的三者关系(第二部分)
  • PyTorch的数据处理
  • 第14章-蓝牙遥控小车 手把手做蓝牙APP遥控小车 蓝牙串口通讯讲解
  • 【补充1】字节对齐
  • Java数据库连接(JDBC)
  • 记录一次cas单点登录的集成
  • 【吊打面试官系列】Java高并发篇 - 什么是乐观锁和悲观锁?
  • 机器学习之词袋模型
  • 【C++/STL】vector(常见接口、模拟实现、迭代器失效)
  • Spring Boot Web 开发:MyBatis、数据库连接池、环境配置与 Lombok 全面解析
  • 【UE5.1 多线程 异步】“Async Blueprints Extension”插件使用记录
  • 【已解决】在jupyter里运行torch.cuda.is_available(),显示True,在pycharm中运行却显示false。
  • Flutter 中的 Scrollbar 小部件:全面指南
  • 【华为】将eNSP导入CRT,并解决不能敲Tab问题
  • 实验二 电子传输系统安全-进展2
  • JavaScript 获取 HTML 中特定父元素下的子元素
  • 等保服务是一次性服务吗?为什么?怎么理解?
  • 全网首发UNIAPP功能多的iapp后台源码
  • 【搜索方法推荐】高效信息检索方法和实用网站推荐
  • 面试被问到不懂的东西,是直接说不懂还是坚持狡辩一下?
  • Flutter 中的 StatefulBuilder 小部件:全面指南
  • mail发送接口API如何使用?怎么调用接口?
  • DOS学习-目录与文件应用操作经典案例-attrib