Python类与对象01

1、理解使用对象完成数据组织的思路

1.1类和对象的基本理解

理解类:从现实世界到编程世界

类由三个部分组成:类名类的属性类的方法。类的定义实际上是描述事物的一种方法,在现实世界中,事物都是有属性和行为的。通过类,我们可以将这些属性和行为组织在一起,使其更易于管理和使用。

类的基本组成部分
  1. 类名:类的名字,用来标识这个类。例如,我们可以用 Phone 来代表手机这个类。
  2. 类的属性:属性是描述事物特征的变量。例如,一部手机的属性可以包括型号、重量、长宽等。
  3. 类的方法:方法是描述事物行为的函数。例如,手机的行为可以包括上网、打电话、拍照等。
现实世界的类比

手机

  • 属性:型号、重量、长宽
  • 行为:上网、打电话、拍照

为了更好地理解对象和类之间的关系,我们不妨来想象一个场景:

现在,老师要搜集同学们的个人信息。同学们需要将自己的姓名、年龄和城市填在纸上交给老师。那么,你会怎样填写呢?

没错!大多数人会选择列一张表格。

在表格中,我们可以将“姓名”、“年龄”和“城市”看作表格的属性。当不同的同学填写这张表格时,我们就搜集到了不同的数据。

因此我们可以形象地理解为:

  • :一种程序内的设计图纸,就像我们设计的表格模板,定义了所有同学信息的结构。
  • 对象:基于类(设计图纸)创建的具体实体,就像每个同学填写的表格。

在编程中,类定义了对象的属性和行为,而对象则是类的具体实例。

类相当于一种模版,规定了对象应该有哪些属性(如姓名、年龄、城市)以及可以进行哪些操作(如修改属性、打印信息等)。而对象则是具体使用这个模版创建出来的个体,每个对象都有自己的属性值(如小明的姓名、年龄和城市)。

因此,类就像是一张表格的模版,而对象就是填好的每一行表格。类提供了一种统一的结构和行为定义,而对象则是这个结构的具体体现,每个对象都有独特的数据但共享相同的行为。

通过这种方式,类和对象共同使得程序中的数据管理更加有序和高效。

2、编程实现

Python提供了class关键字来定义类,例如:

1.在程序中设计表格,我们称之为:设计类

class student:name=Noneage=Nonescore=None

我们创建了一个名叫student的类,包含名字,年龄,分数三个属性,并将三个属性的初值赋为None。

2.在程序中打印生产表格:创建对象

stu1=student()
stu2=student()

我们创建了stu1和stu2两个对象,可以理解为两个同学

3.在程序中填写表格,明确对象后对对象的属性赋值:

stu1=student()
stu1.name='张三'
stu1.age=18
stu1.score=80stu2=student()
stu2.name='李四'
stu2.age=19
stu2.score=90

这样我们就完成了数据的组织,不妨打印以下,看看效果。

 3、成员方法与self关键字

我们在1.1中提到类包含类名,成员属性和成员方法。前两者在2中都已介绍,现在我们来学习成员方法的使用。

成员方法可以理解为类的行为。在程序中则是一个函数。

针对上一问的例子,同学们交代了基本信息,就要做个自我介绍了。我们设计一个程序,让同学们报出自己的名字。

def introduction(self):print(f'我是{self.name}')

成员方法

def 关键字: 这是 Python 用来定义函数或方法的关键字。方法是类中的函数,与类的实例相关联。

方法名称

introduction: 这是方法的名称,用于标识这个方法。可以通过调用这个名称来执行方法中的代码。

参数

selfself 是一个引用,指向调用这个方法的实例对象。通过 self,你可以访问对象的属性和其他方法。在类的方法定义中,self 是必须作为第一个参数的,尽管你在调用方法时并不显式传递它。

这里总结以下self的作用:

1、self表示类对象本身的意思。

2、只有通过self,成员方法才能访问类的成员变量。

3、self出现在形参中,但是不占用参数位置。

方法主体

print(f'我是{self.name}')

  • f 字符串:这是一个格式化字符串,用于在字符串中嵌入表达式。以 f 开头的字符串可以在花括号 {} 中包含变量或表达式。
  • self.name:通过 self 访问对象的 name 属性,并将其嵌入到字符串中。

完整运行代码得到如下结果:

4、构造方法

在上面的例子中,我们需要手动为每个对象的属性赋值,这个过程确实比较繁琐,尤其是当对象较多时,会耗费大量时间和精力。为了解决这个问题,我们可以使用构造方法(即初始化方法)来简化属性赋值的过程。

Python中__init__( )方法称为构造方法。

可以实现:

1、创建类对象时自动执行。

2、创建类对象时,将传入参数自动传递给__init__( )方法中。

我们参考下面这个例子:

class Student:# 定义类的属性,初始值为 Nonename = Noneage = Nonescore = None# 构造方法,在创建对象时自动调用,用于初始化对象的属性def __init__(self, name, age, score):self.name = name  # 初始化姓名属性self.age = age    # 初始化年龄属性self.score = score  # 初始化分数属性# 成员方法,用于打印对象的自我介绍信息def introduction(self):print(f'我是{self.name}, 我的年龄是{self.age}, 我的分数是{self.score}')# 创建 Student 类的对象,并初始化属性
stu1 = Student('小明', 19, 90)# 调用对象的 introduction 方法,打印自我介绍信息
stu1.introduction()

在上面的代码中,我们定义了一个构造方法 __init__,它接受三个参数:nameagescore。当创建对象时,这些参数将用于初始化对象的属性。

在构造方法中,self.name = name 这一行代码将传入的 name 参数值赋给对象的 name 属性。类似地,self.age = ageself.score = score 将传入的 agescore 参数值赋给对象的相应属性。

当我们创建 Student 类的对象时,例如 stu1 = Student('小明', 19, 90),构造方法 __init__ 会自动调用。

传入的参数 '小明'1990 分别赋值给对象 stu1nameagescore 属性。

最后再强调两点注意事项:

1、构造方法不要忘记使用self关键字。

2、在方法内部使用成员变量需要使用self关键字。

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

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

相关文章

【贪心算法题记录】134. 加油站

题目描述 题目&#x1f517; 初始答案 思路都在注释里&#xff0c;不够超出时间限制了。 class Solution { public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {/* 首先出发站startIndex获得的汽油要大于前往下一站要消耗的汽油* …

JVM:类加载器

文章目录 一、什么是类加载器二、类加载器的应用场景三、类加载器的分类1、分类2、启动类加载器 四、双亲委派机制五、打破双亲委派机制六、JDK9之后的类加载器 一、什么是类加载器 类加载器&#xff08;ClassLoader&#xff09;是Java虚拟机提供给应用程序去实现获取类和接口…

休息时间c++

题目描述 小杨计划在某个时刻开始学习&#xff0c;并决定在学习k秒后开始休息。 小杨想知道自己开始休息的时刻是多少。 输入 前三行每行包含一个整数&#xff0c;分别表示小杨开始学习时刻的时h、分m、秒s(h&#xff0c;m&#xff0c;s的值符合1≤h≤12,0≤m≤59,0≤s≤59)…

Geoserver源码解读六 插件

系列文章目录 Geoserver源码解读一 环境搭建 Geoserver源码解读二 主入口 Geoserver源码解读三 GeoServerBasePage Geoserver源码解读四 REST服务 Geoserver源码解读五 Catalog Geoserver源码解读六 插件&#xff08;怎么在开发模式下使用&#xff09; 目录 系列文章目…

看番工具 -- oneAnime v1.2.5绿色版

软件简介 OneAnime是一款专为动漫爱好者设计的应用程序&#xff0c;它提供了一个庞大的动漫资源库&#xff0c;用户可以在这里找到各种类型的动漫&#xff0c;包括热门的、经典的、新番的等等。OneAnime的界面设计简洁明了&#xff0c;操作方便&#xff0c;用户可以轻松地搜索…

C++系列-Vector(一)

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” Vector的介绍及使用 Vector的介绍 当vector构建的参数类型为char类型时&#xff0c;它是和string是极其类似的&#xff0c;但是二者之间也有不同&#xff0c;比如&#xff0c…

[C++] 模拟实现list(二)

标题&#xff1a;[C] 模拟实现list&#xff08;二&#xff09; 水墨不写bug 目录 &#xff08;一&#xff09;回顾 &#xff08;二&#xff09;迭代器类的封装设计 &#xff08;1&#xff09;成员函数简要分析 &#xff08;2&#xff09;const迭代器类的设计 &#xff08;…

二四、3d人脸构建

一、下载github项目3dmm_cnn-master https://github.com/anhttran/3dmm_cnn.git 一个使用深度神经网络从单个图像进行 3D 人脸建模的项目,端到端代码,可直接根据图像强度进行 3D 形状和纹理估计;使用回归的 3D 面部模型,从检测到的面部特征点估计头部姿势和表情。…

19185 01背包问题

解决这个问题的关键是使用动态规划的方法。我们可以创建一个二维数组dp[i][j]&#xff0c;其中i表示考虑前i件物品&#xff0c;j表示背包的容量。dp[i][j]的值表示在考虑前i件物品&#xff0c;且背包容量为j时能获得的最大价值。 ### 算法步骤 1. 初始化一个二维数组dp&#x…

机器学习(五) -- 监督学习(7) --SVM2

系列文章目录及链接 上篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;7&#xff09; --SVM1 下篇&#xff1a; 前言 tips&#xff1a;标题前有“***”的内容为补充内容&#xff0c;是给好奇心重的宝宝看的&#xff0c;可自行跳过。文章内容被“文…

ABAQUS大连正版代理商:亿达四方——开启东北工业智能仿真新篇章

在东北老工业基地的振兴道路上&#xff0c;大连以其独特的地理位置和深厚的产业基础&#xff0c;成为推动区域经济发展的领头羊。作为国际知名的仿真软件ABAQUS在大连地区的官方授权代理商&#xff0c;亿达四方正以科技创新为驱动&#xff0c;引领当地制造业迈向数字化、智能化…

SD卡讲解

SD 卡 (Secure Digital Memory Card) 在我们生活中已经非常普遍了&#xff0c;控制器对 SD 卡进行读写通信 操作一般有两种通信接口可选&#xff0c;一种是 SPI 接口&#xff0c;另外一种就是 SDIO 接口。SDIO 全称是安全数 字输入/输出接口&#xff0c;多媒体卡 (MMC)、SD 卡、…

stm32使用pwm和编码器模式(包含重映射)

Dri_TIM.c #include "Dri_TIM.h"/*** description: TIM4初始化&#xff0c;pwm模式* return {*}*/ void Dri_TIM4_Init() {/* 1. 开启时钟*//* 1.1 定时器4的时钟 */RCC->APB1ENR | RCC_APB1ENR_TIM4EN;/* 1.2 GPIO的时钟 PB */RCC->APB2ENR | RCC_APB2ENR_I…

【Python实战因果推断】30_双重差分1

目录 Panel Data 在讨论了干预效果异质性之后&#xff0c;是时候转换一下思路&#xff0c;回到平均干预效果上来了。在接下来的几章中&#xff0c;您将学习如何利用面板数据进行因果推断。 面板数据是一种跨时间重复观测的数据结构。在多个时间段观察同一单位&#xff0c;可以…

PyTorch中的CPU和GPU代码实现详解

PyTorch中的CPU和GPU PyTorch中的CPU和GPU代码实现详解1. 安装PyTorch2. 编写支持CPU和GPU的PyTorch代码2.1 模型定义2.2 数据加载2.3 将模型和数据移动到GPU2.4 训练循环 3. 关键步骤详解**3.1 定义设备****3.2 模型和数据移动到GPU****3.3 优化器和损失函数** 4. 完整代码示例…

构建实时银行应用程序:英国金融机构 Nationwide 为何选择 MongoDB Atlas

Nationwide Building Society 超过135年的互助合作 Nationwide Building Society&#xff08;以下简称“Nationwide”&#xff09; 是一家英国金融服务提供商&#xff0c;拥有超过 1500 万名会员&#xff0c;是全球最大的建房互助会。 Nationwide 的故事可以追溯到 1884 年&am…

web后端开发--请求响应

目录 前言 请求 简单参数 原始方法 Spring方式 Post请求乱码处理 实体参数 简单实体参数 复杂实体参数 ​编辑 数组集合参数 数组参数 ​编辑 集合参数 日期参数 ​编辑 Json参数 ​编辑 传递json数据 json数组 json对象&#xff08;POJO&#xff09; jso…

Dify中的知识库API列表

1.知识库API列表 通过文本/文件创建/更新/删除文档/查询文档嵌入状态&#xff0c;知识库创建/知识库查询/文档列表查询&#xff0c;分段增/删/改/查。 接口名字功能描述请求示例POST/datasets/{dataset_id}/document/create_by_text通过文本创建文档此接口基于已存在知识库&a…

tableau人口金字塔,漏斗图,箱线图绘制 - 13

人口金字塔&#xff0c;漏斗图&#xff0c;箱线图 1. 金字塔1.1 定义1.2 金字塔创建1.2.1 数据导入1.2.2 数据异常排查1.2.3 创建度量字段1.2.4 转换属性1.2.5 创建数据桶1.2.6 选择相关属性1.2.7 年龄排序1.2.8 创建计算字段1.2.9 选择相关字段1.2.10 设置轴排序1.2.11 设置颜…

Windows系统服务器远程教程

在远程连接Windows系统服务器之前&#xff0c;需要确保以下几点&#xff1a; 被远程的Windows服务器必须开启远程桌面功能。这一功能在Windows系统中默认是关闭的&#xff0c;需要手动启用。 必须为两台计算机中的一台计算机&#xff08;即客户端&#xff09;创建远程桌面连接。…