【python基础学习10课_面向对象、封装、继承、多态】

news2025/1/21 15:24:48

一、类与对象

1、类的定义

在类的里面,称之为方法。
在类的外面,称之为函数。


类:人类,一个族群,是一个群体

类的语法规则:

class 自定义的类名():
    属性 -- 变量
    方法 -- 函数

类,首字母大写,拼接的英文不需要隔开,但是每个单词的首字母都需要大写
方法/函数,首字母小写,拼接的英文需要用下划线隔开
1)类里面定义的变量、方法,不能在类的外面引用

 2)通过实例化对象,来调用类里面的变量和函数
类名A +() 表示实例化一个对象,对象要有个定义的名字B

所以  对象B = 类名A ()  表示,对A类,示例化了一个个体对象B。

也就是对 人类,实例化了一个 对象 叫小王。小王具有人类的属性特征

对学生群体类,实例化了 一个对象,叫大学生,大学生具有学生群体类的属性和特征

实例化  就是  初始化

 

3)同一个类的对象,都是一样的基本属性
4)通过变量的重定义,来进行对象属性的修改

初始化的时候,不同的对象,属性一致。但是对象有了属性的重定义后,重定义的属性是该对象自己自定义的属性。手机刚出厂,基本设置一样,但是后面每个人都对自己的手机进行自定义,手机就不一样了,但也都是在基本属性之上的改变。

 

对象中的属性和方法都是没有相互影响的,对C对象的属性重定义,不影响B对象的

2、类的应用

1)构造方法
1、在Python中,构造方法(也称为初始化方法)是一个特殊的方法,用于在创建类的实例时初始化该实例。构造方法的语法规则如下:

构造方法的名称必须是 _ _init_ _  (前后都是双下划线,表示这是一个特殊方法)正常显示会连上,看起来是:__init__

构造方法至少需要有一个参数,通常是 self,它指向新创建的实例本身。

self 参数必须是构造方法的第一个参数。

构造方法可以有任何数量的其他参数,这些参数在创建实例时提供,用于初始化实例的属性。


2、举例:
class MyClass:
    def __init__(self, value1, value2):
        self.attribute1 = value1 
        self.attribute2 = value2

# 创建 MyClass 的一个实例,传递两个参数给构造方法
my_instance = MyClass(10, 20)


3、解析上面的例子:
class: 定义类的关键字。
MyClass: 类的名称,可以是任何有效的Python标识符。
__init__: 构造方法的名称,双下划线表示这是一个特殊方法。
self: 指向类实例的引用,在类的方法中始终作为第一个参数传递。
value1, value2: 构造方法的参数,用于接收传递给实例化时的值。
self.attribute1, self.attribute2: 实例属性,使用 self 关键字来设置实例的属性。
在创建类的实例时,Python会自动调用构造方法。构造方法的目的是为了能够定制每个实例的创建过程,为其提供初始状态。



self表示当前对象,传入进来的属性,需要赋值给当前对象的属性
 
self表示当前对象,给这个对象传入进来的属性,需要赋值给当前对象的属性

2)构造方法的应用

3、类中的属性

1)类属性的定义
实例属性:实例化的对象的属性
    定义在构造方法中的属性
        公有实例属性:常规属性
        私有实例属性:双下划线开头,只能够在自己的类中进行调用

        私有属性,是防止被随意的乱改





语法规则:
对象名称.属性名称


类的内部使用:
self.属性名称--self表示当前对象
 2)调用公共属性

属性错误:'Person'对象没有属性'self'

正确,不带self

 3)调用私有属性
3.1)在类的外面直接调用--报错

属性错误:'Person'对象没有属性'__sex'

3.2)在类的外面,通过类的方法执行在类的里面的私有属性--可以调用

在类的里面,是不区分公有和私有的属性,在类的方法里面可以直接操作类的所有属性

 

3.3)私有属性在类的外面被重定义,就不再是私有的了

重定义的属性就是该对象自己自定义的属性,属于该对象,重定义后的属性不再是原先的属性

 4、类中的方法

1)类方法的定义
方法与函数的主要区别:

1)关联:方法与特定的类实例相关联,而函数是独立的。
2)调用方式:方法通常通过对象调用,如 object.method(),而函数直接通过其名称调用,如 function()。
3)参数:方法至少有一个参数 self,它是对当前对象的引用,而函数没有这样的隐含参数。
4)作用域:方法可以访问其所属对象的属性和其他方法,而函数只能访问全局作用域和其参数中传递的值。

类里面的叫方法,类外面的叫函数。

2)调用公共方法

2)调用私有方法

私有方法不能直接调用

通过调用公共方法来调用私有方法

5、类的封装

1)封装的定义
封装:
1、设置一个方法,可以进行对私有属性的传值
2、可以把私有属性返回,让在类的外面可以操作私有属性

set和get:可以通过定义方法来访问和修改类的属性,从而提供对属性访问的更细粒度的控制。
 2)封装的实践

6、类的继承

继承:节约代码的维护量,在原有的基础上面进行迭代维护

语法规则:
class 自定义类名(父类):
    子类独有的代码块

在实例化之后,可以调用子类的方法和属性,也可以调用父类的方法和属性
 1)单继承

 1.1)想使用父类的私有属性,就得对父类进行封装。

 1.2)想使用父类的私有方法,就得在父类里增加一个调用私有方法的公共方法。

 

2)继承的传递性

子类的子类,可以调用父类的属性和方法

3)方法的重构
方法的重构,只运行自己的,不运行父级的方法

 

 4)多继承
"""
语法规则:
class 自定义类名(父类1, 父类2):
    其余的内容和之前的没什么区别
"""

4.1)两个父类,都有同名的方法--方法的重构

执行:子类(近父类,远父类)的近的父类的方法

4.2)两个父类和自己,都有同名的方法--方法的重构

自己有的重构的方法,就只执行自己的。如果自己没有这个重构的方法,谁离的近就执行谁的。

7、多态 


多态:定一个规则,按照这个规则向接口提供对应的不同的对象。然后根据提供的不同对象,去执行不同对象中的方法


传对象,调用对象里面的属性和方法

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1495764.html

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

相关文章

Json web token (JWT)渗透与防御及ctf例题

第三部分的signature签名用来认证签名是否被更改 算法为none是因为开发人员为了更方便的修改,把header部分设置为none,从而不用进行第三部分签名的认证。 注:一定要先切换到jwt_tool目录下面使用 还可以使用-c -d参数使用自带的字典进行爆破密…

如何做代币分析:以 USDC 币为例

作者: lesleyfootprint.network 编译:mingfootprint.network 数据源: USDC Token Dashboard (仅包括以太坊数据) 在加密货币和数字资产领域,代币分析起着至关重要的作用。代币分析指的是深入研究与代币相…

[IDE工具]Ubuntu18.04 VSCode版本升级

一、下载新版本 https://code.visualstudio.com/Download 二、安装deb sudo dpkg -i code_1.87.0-1709078641_amd64.deb 升级完成! 三、问题解决 1. 依赖于 libc6 (> 2.28);然而:系统中 libc6:amd64 的版本为 2.27-3ubuntu1.6 1.1…

凌鲨客户端架构

客户端架构 客户端使用了tauri作为主框架,通过rust和内置应用(sidecar)为前端界面提供额外能力。 内置应用(sidecar) 应用 相关项目 说明 devc 开发环境容器工具 gitspy 本地git仓库管理工具 grpcutil grpc调用工具 mongo 通讯协议 mongo协议转发工具 …

信息系统项目管理师--范围管理

项⽬范围管理 产品范围:指某项产品、服务或成果所具有的特征和功能。产品范围的完成情况是根据产品需求来衡量的。“需求”是指根据特定协议或其他强制性规范,产品、服务或成果 必须具备的条件或能⼒。 项⽬范围:包括产品范围,是为…

在vue3中使用el-tree-select做一个树形下拉选择器

el-tree-select是一个含有下拉菜单的树形选择器,结合了 el-tree 和 el-select 两个组件的功能。 因为包含了el-tree的功能,我们可以自定义tree的节点,创造出想要的组件 使用default插槽可以自定义节点内容,它的default插槽相当于…

基于扩散模型的图像编辑:首篇综述

AIGC 大模型最火热的任务之一——基于 Diffusion Model 的图像编辑(editing)领域的首篇综述。长达 26 页,涵盖 297 篇文献!本文全面研究图像编辑前沿方法,并根据技术路线精炼地划分为 3 个大类、14 个子类,通过表格列明每个方法的…

【golang】26、retry-go 使用示例和源码解析

文章目录 一、使用方法1.1 http 示例1.1.1 retry.Do1.1.2 retry.DoWithData1.1.3 OnRetry1.1.4 根据 error 的类型,决定 delay 的时长1.1.5 自定义 retry function 二、API2.1 Do 执行2.1.1 Do2.1.2 DoWithData 2.2 Delay 策略2.3 错误处理2.3.1 Unwrap2.3.2 Unwrap…

【智能家居】东胜物联ODM定制ZigBee网关,助力能源管理解决方案商,提升市场占有率

背景 本文案例服务的客户是专业从事智能家居能源管理的解决方案商,其产品与服务旨在帮助用户监测、管理和优化能源消耗,以提高能源使用效率。 随着公司的扩张,为了增加市场占有率,他们希望找到更好的硬件服务支持,以…

染色法

染色法:将图中所有的节点都染上颜色1或颜色2,染色规则为相邻节点不能为同一种颜色,即节点 x 若为颜色1则它的相邻节点 y 的颜色为2 时间复杂度:O(nm) 解决问题:判断是否为二分图 二分图:又称作二部图&am…

java之——反射

文章目录 反射的基本概念反射的概念反射的作用 反射的基本信息反射的相关类型Class类Class类中的相关方法newInstabce()getName方法 Field类中的方法getFiled()方法getDeclareField(String name) Constructor类getConstructors()getDeclaredConstructors() Method类getMethods(…

STM32使用标准库编写外部时钟控制oled显示计数(proteus仿真)

这节课的结果是在上节课的基础上更改的:电路图为:用一个开关来模拟外部时钟的高低电平的变化。 当然也可以配置一个外部时钟来模拟,也是可以的: 由于这节课的代码是在上节课的基础上有一点修改而来的,所以就只把更改的…

8、Linux-软件安装:rpm和yum;配置yum阿里云镜像源

一、介绍 Linux安装软件有两种方式, ①rpm:安装已有的安装包,类似于Windows中双击exe的安装包程序 ②yum:拉取远程仓库的文件,类似于python的pip install 区别:假设软件A依赖软件B,软件B依赖…

个推与华为深度合作,成为首批支持兼容HarmonyOS NEXT的服务商

自华为官方宣布HarmonyOS NEXT鸿蒙星河版开放申请以来,越来越多的头部APP宣布启动鸿蒙原生开发,鸿蒙生态也随之进入全新发展的第二阶段。 作为华为鸿蒙生态的重要合作伙伴,个推一直积极参与鸿蒙生态建设。为帮助用户在HarmonyOS NEXT上持续享…

git同步指定分支指定文件,可同步到同一仓库,可同步到不同仓库

源代码: run-func.js const express require(express); const fs require(fs); const simpleGit require(simple-git); const cors require(cors); // 引入 cors 模块const app express();// 使用 cors 中间件 app.use(cors());const git simpleGit().cwd(..…

OSPF NSSA实验简述

OSPF NSSA实验简述 1、OSPF NSSA区域配置 为解决末端区域维护过大LSDB带来的问题,通过配置stub 区域或totally stub区域可以解决,但是他们都不能引入外部路由场景。 No so stuby area (区域)NSSA 可以引入外部路由,支持…

C++小记 -链表

链表 文章目录 链表链表基础理论链表的类型单链表双链表循环链表 链表的存储方式链表的定义链表的操作添加节点删除节点 性能分析构建链表删除节点(内存泄漏的坑)1.直接移除2.使用虚拟头结点3.delete指针后,要将指针置为NULL!&…

【python】对角线遍历

python系列文章目录 【python】基于cv2提取图片上的文本内容 【python】简单作图 【python】数组字符串等实用 【python】sort与sorted排序使用 【python】对角线遍历 python系列文章目录说明1.分析2.注意事项2.1 遍历2.2 区间2.3 顺序 3.代码实现 说明 给你一个大小为 m x n…

SpringCloud Feign实现微服务间的远程调用(黑马头条Day04)

目录 Feign介绍 Feign的执行流程 项目中使用Feign介绍 实现步骤 添加Feign依赖 注册feign远程调用接口,并指定需要调用的微服务 在leadnews-artilce微服务中创建接口实现类 在wemedia微服务中添加EnableFeignClients注解,并指定需要扫描的包 在wem…

突破编程_前端_JS编程实例(简单树结构组件)

1 开发目标 实现如下简单树结构组件: 再点击树节点后,会调用客户端传入的回调函数: 2 详细需求 简单树结构组件需根据客户端提供的参数创建,具备动态构建树形结构节点、选项卡切换及自定义内容显示等功能: &#xf…