python核心编程(二)

news2024/9/21 4:31:58

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.coloradmin.cn/o/1702593.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MongoDB数据库清理策略: 自动化过期数据删除实战

1、引言 随着应用程序和业务数据的持续增长,有效地管理数据库存储空间成为维护系统性能的关键。在MongoDB这类NoSQL数据库中,定期清理过期数据变得尤为重要,这不仅能释放宝贵的存储资源,还能优化查询性能,确保数据库运…

约翰·舒尔曼访谈解读:2027年AGI将成现实?

随着人工智能技术的不断进步,AGI(通用人工智能)的实现似乎不再是遥不可及的梦想。近日,OpenAI联合创始人兼首席架构师约翰舒尔曼(John Schulman)在访谈中分享了他对AI模型未来发展的看法,并预言…

day 4:2028. 找出缺失的观测数据

Leetcode 2028. 找出缺失的观测数据 现有一份 n m 次投掷单个** 六面** 骰子的观测数据,骰子的每个面从 1 到 6 编号。观测数据中缺失了 n 份,你手上只拿到剩余 m 次投掷的数据。幸好你有之前计算过的这 n m 次投掷数据的 平均值 。 给你一个长度为 m …

IDEA出现javax.servlet.http包错误解决方法

问题原因&#xff1a;缺少对应的jar包&#xff0c;其实tomcat服务器自带与HTTP一些相关的Jar包&#xff0c;没有导入进去。 解决方案1&#xff1a; 导入对应jar包 <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</…

QT使用gsoap获取手机归属地

1-环境变量 用的win32 E:\hes_scc\tools\gsoap_2.8.134\gsoap-2.8\gsoap\bin\win32 2-生成代码接口 自己建一个目录&#xff0c;在此打开cmd窗口&#xff0c;生成的文件都会在这个文件夹中。 这里用的手机归宿地。 wsdl2h -o GetPhoneInfo.h -s -n Phone -t ....\typemap.…

Java(其十二)--集合·初级

ArrayList集合 集合有很多种&#xff0c;ArrayList 是最常用的一种&#xff0c;集合的作用相当于C中的STL 最显著的特点就是&#xff1a;自动扩容。 一般定义式 ArrayList list new ArrayList(); //该 list 是可以储存各种类型的数据的&#xff0c;要想约束储存的数据&#x…

安装appium自动化测试环境,我自己的版本信息

教程来自&#xff1a;Appium原理与安装 - 白月黑羽 我的软件的版本&#xff1a; 安装是选择为自己安装而不是选all user pip install appium-python-client命令在项目根目录下安装appium-python-client sdk的话最简单的安装方式就是去Android官网下一个android studio然后在…

【class17】人工智能初步-----语音识别(3)

【class16】 上节课&#xff0c;我们学习了&#xff1a;wav文件的相关概念知识&#xff0c;并通过代码从视频中获取了音频以及设置了参数。学习新的课程之前&#xff0c;我们先来复习一下吧&#xff01; 代码复习 将上节课学习的代码分为两个部分&#xff1a; part1. 获取音频…

Suricata-入门实验-快速理解suricata

实验环境&#xff1a; 主机win10 ip地址&#xff1a;192.168.121.1 虚拟机使用vm ubuntu20.04 ip地址&#xff1a;192.168.121.128 实验目标&#xff1a; 从主机 给虚拟机 发送ping 命令 虚拟机中Suricata接收到ping后发出告警信息。 正文 在前面 编译好Suricata后&#x…

PTA 计算矩阵两个对角线之和

计算一个nn矩阵两个对角线之和。 输入格式: 第一行输入一个整数n(0<n≤10)&#xff0c;第二行至第n1行&#xff0c;每行输入n个整数&#xff0c;每行第一个数前没有空格&#xff0c;每行的每个数之间各有一个空格。 输出格式: 两条对角线元素和&#xff0c;输出格式见样例…

想知道期权的交易方式有哪些吗?新手必看!

今天期权懂带你了解想知道期权的交易方式有哪些吗&#xff1f;新手必看&#xff01;期权指投资者在支付了一定的权利金之后&#xff0c;将拥有未来某个时间协定价格买入或者卖出的权利。 期权的交易策略方式有哪些&#xff1f; 买入看涨期权&#xff1a; 使用场景&#xff1a…

【算法】位运算——常见位运算基础操作总结

位运算基础操作总结&#xff0c;包括基础运算符 修改某位bit位 目录 1.基础位运算符2.按位基础操作1.给一个数 n&#xff0c;确定其二进制的第 x 位是 0/12.将一个数 n 的二进制标识的第 x 位修改成 13.将一个数 n 的二进制标识的第 x 位修改成 04.提取一个数 n 二进制中最右侧…

Centos 7 安装刻录至服务器

前言 在日常测试中&#xff0c;会遇到很多安装的场景&#xff0c;今天给大家讲一下centos 7 的安装&#xff0c;希望对大家有所帮助。 一.下载镜像 地址如下&#xff1a; centos官方镜像下载地址https://www.centos.org/download/ 按照需求依次点击下载 二.镜像刻录 镜像刻…

【Spring】Spring AOP底层原理:JDK动态代理和CGLIB动态代理

目录 1、代理模式 1.1、静态代理 1.2、动态代理 2、JDK 动态代理 2.1、jdk动态代理简介 2.2、使用JDK动态代理机制步骤 3、CGLIB 动态代理 3.1、CGLIB 动态代理的特性 3.2、CGLIB的核心类 3.3、CGLIB 动态代理步骤 4、JDK 和 CGLIB 创建代理对象的区别 ​编辑 1、…

Linux网络编程:传输层协议|UDP

知识引入&#xff1a; 端口号&#xff1a; 当应用层获得一个传输过来的报文时&#xff0c;这时数据包需要知道&#xff0c;自己应该送往哪一个应用层的服务&#xff0c;这时就引入了“端口号”&#xff0c;通过区分同一台主机不同应用程序的端口号&#xff0c;来保证数据传输…

【高数】重点内容,公式+推导+例题,大学考试必看

目录 1 隐函数求导1.1 公式1.2 说明1.3 例题 2 无条件极值2.1 运用2.2 求解2.3 例题 3 条件极值3.1 运用3.2 求解3.3 例题 4 二重积分4.1 直角坐标下4.2 极坐标下4.3 例题 5 曲线积分5.1 第一型曲线积分5.2 第二型曲线积分5.3 例题 6 格林公式6.1 公式6.2 说明6.3 例题 &#x…

【强化学习】Q-learning,DQN,SARSA算法介绍

【强化学习】Q-learning&#xff0c;DQN&#xff0c;SARSA算法介绍 强化学习算法分类基于价值的方法基于策略的方法Actor-Critic方法 Q-learning算法DQN算法强化学习训练数据存在的问题经验回放机制备份网络机制 Sarsa算法总结 强化学习算法分类 按学习目标进行分类 可分为基于…

信息化赋能:干部监督工作的创新与实践

随着信息技术的迅猛发展&#xff0c;信息化手段在干部监督工作中的应用越来越广泛&#xff0c;为提升监督工作的效率和精准度提供了有力支持。以下是如何利用信息化手段扎实推进干部监督工作的几点建议&#xff1a; 一、搭建信息化平台&#xff0c;实现数据统一管理 要扎实推…

【unity小技巧】unity读excel配置表操作,excel转txt文本,并读取txt文本内容,实例说明

文章目录 前言下载资源库导入资源库excel转txt文本读取txt内容 读取配置表所有的数据&#xff0c;并使用结束语 前言 关于unity读excel配置表操作&#xff0c;其实之前就有用过&#xff0c;这里只是单独整理出这部分知识&#xff0c;后续好使用。 感兴趣可以去看看&#xff1a…

【408精华知识】时钟周期、机器周期、总线周期、指令周期、存取周期还傻傻分不清?

在做题时&#xff0c;我们经常能遇到关于“周期”的表述&#xff0c;比如时钟周期、机器周期、总线周期、指令周期、存取周期&#xff0c;类似的表述让我们很容易迷茫&#xff0c;那么接下来我们就看看它们到底是什么、有什么区别&#xff1f; 周期特点时钟周期也称为CPU时钟周…