# 59. python的类与对象-更新

news/2024/4/17 10:35:17

[目录]

文章目录

  • 59. python的类与对象-更新
    • 1.面向对象编程
    • 2.什么是类
    • 3.什么是对象
    • 4.如何描述对象
    • 5.对象的属性和方法
    • 6.Python中的类
    • 7.type()函数查看数据类型
    • 8.类在Python中的应用
    • 9.总结

【正文】

59. python的类与对象-更新

1.面向对象编程

本节内容特别抽象,初学者阅读一遍即可,不用深究每个概念的含义。

重点是后面章节的语法知识。

当你接触的代码多了,再回过头看这篇笔记,你会有新的认知,一切都会豁然开朗。

object [ˈɒbdʒɪkt]:对象。

oriented[ˈɔːrientɪd]:导向。

programming [ˈprəʊɡræmɪŋ]:程序。

object-oriented programming简称OOP

object-oriented programming翻译为中文是面向对象程序设计即面向对象编程

面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式。

它将程序的组织方式从传统的以函数为中心转变为以对象为中心。

在面向对象编程中,我们通过创建类来定义对象的特征和行为。

2.什么是类

类即分类。

古语云:物以类聚,人以群分。

日常生活中,我们会习惯性的对事物进行分类。

【人类】

根据人的性别,我们将人分为男人和女人。
反过来,我们也将男人和女人统称为人类。

【车类】

按照车身类型,我们将车分为轿车、SUV、跑车、货车、客车。
反过来,我们也将轿车、SUV、跑车、货车、客车统称为车类。

【中文释义】

类是对一类事物的概括,是许多相似事物的综合。

注意这些事物各不相同,但具有一些共同的特征或行为。

【Python中的类】

在面向对象编程中,类定义了一组共同属性和方法的集合。

类可以看作是对象的模板或者蓝图,它描述了对象的特征和行为。

一个类可以创建多个对象,每个对象都具有相同的属性和方法,但是它们的具体值可能不同。

3.什么是对象

类是对一类事物的概括,是许多相似或相同事物的综合。

类里的每一个具体事物或每个单独的个体就是对象。

类是对象的模板,对象是类的实例。

4.如何描述对象

从静态和动态2个方面来描述一只大雁。

【静态-从外观上来说】

根据物种分类法,雁类可以分为灰雁、白额雁、小雁、玄鹅。
这些雁的种类虽然不同,但都具备了喙、翅膀和爪等属性。

-喙
-翅膀
-爪子

【动态-从行为上来说】

雁都有觅食、飞行、睡觉等行为。

  • 觅食
  • 飞行
  • 睡觉

5.对象的属性和方法

在这里插入图片描述

【属性】

对象的静态部分称为属性。

属性是静止的,是对象客观存在的。

例如大雁的喙,翅膀、爪子就是大雁的属性。

【方法】

对象的动态部分称为方法。

方法是动态的,是一种行为或者动作。

例如大雁的觅食、飞翔、睡觉就是大雁的方法。

在这里插入图片描述

【备注】

图片来源于明日科技《零基础学Python》。

下面讲两个例子来理解类与对象。

【学生类】

  • 类名:学生类
  • 属性:姓名、年龄、班级、成绩
  • 行为:学习、考试、休息
  • 对象:一个有具体姓名、年龄、班级的学生

【车类】

  • 类名:车类
  • 属性:车型、颜色、长度
  • 行为:前进、刹车、倒车
  • 对象:一辆各项属性都明确的汽车

6.Python中的类

Python中的最典型的类是数据类型。

不同的数据类型属于不同的类。

  1. 整数类
  2. 浮点数类
  3. 字符串类
  4. 布尔类型
  5. 列表类
  6. 元组类
  7. 字典类
  8. 集合类

7.type()函数查看数据类型

使用内置函数type查看数据类型:

# 1、2、3 属于整数(int)类
print(type(1))
print(type(2))
print(type(3))
# '1'、'2'、'3' 属于字符串(str)类
print(type('1'))
print(type('2'))
print(type('3'))

【终端输出】

<class 'int'>
<class 'int'>
<class 'int'>
<class 'str'>
<class 'str'>
<class 'str'>

运行上面的代码,终端显示的结果为:<class 'int'><class 'str'>

class[klɑːs]:类,班级。

class 在的中文释义是类别的意思,在Python中就代表类。

<class 'int'>表示类别为整数即整数类。

<class 'str'>表示类别为字符串即字符串类。

整数类

1 2 3 这些数据都属于整数(int)类,虽然值各不一样,但都有能进行加减运算的相同点。

字符串类

'1' '2' '3'这些数据都属于字符串(str)类,虽然值各不一样,但都有能进行拼接的相同点。

8.类在Python中的应用

假设我们正在开发一个Web应用程序,现在需要设置一个模块来管理访问网站的用户。

我们可以根据需求和功能来确定类名、对象、属性和方法。

  • 类名:用户类
  • 属性:用户名、密码
  • 方法:注册新用户、验证用户身份、更新用户信息
  • 对象:一个各项属性都明确的用户

【思路分析】

类名:创建一个名为User的类,用于表示用户。这里的用户是一个抽象的概念,是所有访问网站用户的统称,没有具体指谁。

对象:登录网站的实际用户。这里的用户是真实存在的,它有具体的用户名和登录密码。

属性:用户对象的用户名、密码、电子邮件等都可以作为用户的属性。

方法:定义几个方法实现用户相关的功能。例如注册新用户、验证用户身份、更新用户信息等。

【代码示例】

class User:def __init__(self, username, password):self.username = usernameself.password = password               def register_user(self, username, password):self.username = usernameself.password = password        print(f"用户{username}注册成功." )def validate_user(self, username, password):if self.username == username and self.password == password:print(f"恭喜{username}成功登录!")else:print("您输入的用户名或密码错误。")def update_user_code(self, username, password):if self.username == username:self.password = password            print(f"用户{username}的登录密码为{password}!")else:print("无效用户名。")# 实例化一个用户对象
user = User('张三', '1234')# 调用注册新用户方法
user.register_user('张三', '1234')# 调用验证用户身份方法
user.validate_user('张三', '1234')# 调用更新用户信息方法
user.update_user_code('张三', '6666')

【终端输出】

用户张三注册成功.
恭喜张三成功登录!
用户张三的登录密码为6666!

【代码解析】

上面的代码创建了一个名为User的类,它有一个初始化方法__init__,在这个方法中,我们可以给对象的属性赋初值。

在register_user方法中,用户可以注册新用户,该方法接受两个参数:用户名和密码,将这两个参数分别赋值给self.username和self.password属性,并打印出注册成功的信息。

validate_user方法用于验证用户的身份,接受两个参数:用户名和密码,如果输入的用户名和密码与对象的属性值相匹配,则打印登录成功的信息,否则打印用户名或密码错误的信息。

update_user_code方法用于更新用户的密码,接受两个参数:用户名和新密码,如果输入的用户名与对象的属性值相匹配,则将新密码赋值给self.password属性,并打印出更新成功的信息,否则打印无效用户名的信息。

在上面代码中,首先实例化了一个用户对象user,用户名为张三,密码为1234

然后依次调用了注册新用户方法、验证用户身份方法和更新用户信息方法,分别传入相应的参数。

上面的代码仅做了解,后面的章节会详细的介绍相关知识。

9.总结

在这里插入图片描述


http://www.ppmy.cn/news/1049082.html

相关文章

9. 回文数

9. 回文数 给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 例如&#xff0c;121 是回文&a…

路由跳转--编程式导航

简介 除了使用 创建 a 标签来定义导航链接&#xff0c;我们还可以通过编程式导航实现导航。所谓编程式导航指的是不通过router-link跳转&#xff0c;而是借助 router 的实例&#xff0c;通过代码的方式跳转。 示例&#xff1a; App.vue <template><div id"ap…

机器视觉之反向投影(Back Projection)

反向投影&#xff08;Back Projection&#xff09;是一种图像处理技术&#xff0c;通常用于目标跟踪、图像分割和对象检测等应用中。它的基本思想是将一个模板或感兴趣的区域在图像中的像素映射回到一个空间中&#xff0c;以便在该空间中查找目标对象。反向投影通常与直方图投影…

实验四 SD 卡启动盘制作

【实验目的】 掌握 SD 卡启动盘的制作方法 【实验环境】 FS4412 实验平台 【实验步骤】 烧写工具默认从 0 扇区开始烧写&#xff0c;这里我们自己在 uboot 之前放一个512 字节的空镜像 将资料中“u-boot 镜像”中的 u-boot-fs4412.bin 拷贝到 ubuntu 的家目录下 在终端输…

2023.8 - java - 条件语句

Java 条件语句 - if...else Java 中的条件语句允许程序根据条件的不同执行不同的代码块。 一个 if 语句包含一个布尔表达式和一条或多条语句。 语法 if 语句的语法如下&#xff1a; if(布尔表达式) {//如果布尔表达式为true将执行的语句 }public class Test {public stati…

前端vue自定义柱形图 选中更改柱形图颜色及文字标注颜色

随着技术的发展&#xff0c;开发的复杂度也越来越高&#xff0c;传统开发方式将一个系统做成了整块应用&#xff0c;经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改&#xff0c;造成牵一发而动全身。 通过组件化开发&#xff0c;可以有效实现…

Java实现将内容写到文件里面

目录 1 实现 1 实现 String appendLog "";File logFile new File(logFileName);// append file contentFileOutputStream fos null;try {fos new FileOutputStream(logFile, true);fos.write(appendLog.getBytes("utf-8"));fos.flush();} catch (Ex…

LeetCode--HOT100题(34)

目录 题目描述&#xff1a;94. 二叉树的中序遍历&#xff08;简单&#xff09;题目接口解题思路1代码解题思路2代码 PS: 题目描述&#xff1a;94. 二叉树的中序遍历&#xff08;简单&#xff09; 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 LeetCode做…

【HCIP】01.RSTP

STP的缺点 STP对计时器的依赖&#xff08;需要等固定30s&#xff09;STP重收敛速度过程慢&#xff08;30s或50s&#xff09;拓扑变化机制太慢&#xff08;高度中央集权&#xff0c;需要上报到根桥再下发TCN&#xff09; RSTP 802.1W&#xff0c;收敛速度更快&#xff0c;能够…

SecureCRT 备份Button Bar中所有Button

一、前言 Button Bar功能可以保存一些常用命令避免重复输入&#xff0c;但是有时候secureCRT的button bar经常莫名其妙消失&#xff0c;重装系统或软件后&#xff0c;也都需要重新一个个添加Button&#xff0c;如果能备份就能减少这些费时间的操作 二、备份步骤 在面板Optio…

报错问题:ImportError: cannot import name ‘ParameterSource‘ from ‘click.core‘

报错问题&#xff1a;ImportError: cannot import name ‘ParameterSource’ from ‘click.core’ 问题&#xff1a; 报错信息&#xff1a; ImportError: cannot import name ‘ParameterSource’ from ‘click.core’ (d:\programdata\conda\cwgis) PS E:\project\python>…

uniapp scroll-view横向滚动无效,scroll-view子元素flex布局不生效

要素排查&#xff1a; 1.scroll-x属性需要开启&#xff0c;官方类型是Boolean&#xff0c;实际字符串也行。 2scroll-view标签需要给予一个固定宽度&#xff0c;可以是百分百也可以是固定宽度或者100vw。 3.子元素需要设置display: inline-block&#xff08;行内块元素&#x…

服务器架构常见的模式

服务器架构常见的模式 服务器架构之一&#xff1a;集群架构 服务器集群就是指将很多服务器集中起来一起进行同一种服务&#xff0c;在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度&#xff0c;也可以用多个计算机做备份&#x…

构建 NodeJS 影院微服务并使用 docker 部署【01/4】

图片来自谷歌 — 封面由我制作 一、说明 构建一个微服务的电影网站&#xff0c;需要Docker、NodeJS、MongoDB&#xff0c;这样的案例您见过吗&#xff1f;如果对此有兴趣&#xff0c;您就继续往下看吧。 在本系列中&#xff0c;我们将构建一个 NodeJS 微服务&#xff0c;并使用…

提升Python代理程序性能的终极解决方案:缓存、连接池和并发

在开发Python代理程序时&#xff0c;优化性能是至关重要的。本文将为你介绍一套终极解决方案&#xff0c;通过缓存、连接池和并发处理等技术&#xff0c;极大地提升Python代理程序的效率和稳定性。 游戏国内地更换虚拟含ip地址数据库地区 1.缓存技术 缓存是 .0-*-696ES2 0一…

Linux系统下的文件目录结构

一、单用户操作系统和多用户操作系统 单用户操作系统&#xff1a;指一台计算机在同一时间内只能由一个用户使用&#xff0c;一个用户独自享用系统的全部硬件和软件资源 Windows XP之前的版本都是单用户操作系统 多用户操作系统:指一台计算机在同一时间可以由多个用户使用&…

解码全栈开发工程师

写在前面 你想成为一名全栈工程师吗&#xff1f;在如今这个大兴降本增效的时代&#xff0c;“全栈”似乎被动的成为了大部分开发者的最终归宿。 在一部分人眼中&#xff0c;全栈代表着更快的成长速度、更丰富的岗位选择&#xff0c;更全面的技术栈也能够为晋升管理岗铺平道路。…

春秋云境:CVE-2022-0543(Redis 沙盒逃逸漏洞)

目录 一、i春秋题目 二、CVE-2022-0543&#xff1a;&#xff08;redis沙盒逃逸&#xff09; 漏洞介绍&#xff1a; 漏洞复现&#xff1a; 一、i春秋题目 靶标介绍&#xff1a; Redis 存在代码注入漏洞&#xff0c;攻击者可利用该漏洞远程执行代码。 进入题目&#xff1a;…

【计算机视觉|生成对抗】非配对图像到图像的翻译:使用循环一致对抗网络(CycleGAN)

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;Unpaired Image-to-Image Translation Using Cycle-Consistent Adversarial Networks 链接&#xff1a;[1703.10593] Unpaired Image-to-Image Translation using Cycle-Consistent Adver…

一文详解 springboot 项目启动时异步执行初始化逻辑

你知道的越多&#xff0c;你不知道的越多 点赞再看&#xff0c;养成习惯 如果您有疑问或者见解&#xff0c;欢迎指教&#xff1a; 企鹅&#xff1a;869192208 文章目录 前言代码实现定义异步处理工具类实现 java 线程池新建 AppInit 实现 ApplicationRunner 接口完成启动项目时…
最新文章