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

[目录]

文章目录

  • 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 = username
        self.password = password               

    def register_user(self, username, password):
        self.username = username
        self.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.总结

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

动手学深度学习-pytorch版本(二):线性神经网络

参考引用 动手学深度学习 1. 线性神经网络 神经网络的整个训练过程&#xff0c;包括: 定义简单的神经网络架构、数据处理、指定损失函数和如何训练模型。经典统计学习技术中的线性回归和 softmax 回归可以视为线性神经网络 1.1 线性回归 回归 (regression) 是能为一个或多个…

[软件工具]精灵标注助手目标检测数据集格式转VOC或者yolo

有时候我们拿到一个数据集发现是xml文件格式如下&#xff1a; <?xml version"1.0" ?> <doc><path>C:\Users\Administrator\Desktop\test\000000000074.jpg</path><outputs><object><item><name>dog</name>…

SSL证书如何使用?SSL保障通信安全

由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中&#xff0c;因此&#xff0c;仅需安装数字证书或服务器证书就可以激活功能了。SSL证书主要是服务于HTTPS&#xff0c;部署证书后&#xff0c;网站链接就由HTTP开头变为HTTPS。 SSL安全证书主要用于发送安全电子邮件、访…

Numpy入门(4)— 保存和导入文件

NumPy保存和导入文件 4.1 文件读写 NumPy可以方便的进行文件读写&#xff0c;如下面这种格式的文本文件&#xff1a; # 使用np.fromfile从文本文件a.data读入数据 # 这里要设置参数sep &#xff0c;表示使用空白字符来分隔数据 # 空格或者回车都属于空白字符&#xff0c;读…

【仿写tomcat】五、响应静态资源(访问html页面)、路由支持以及多线程改进

访问html页面 如果我们想访问html页面其实就是将本地的html文件以流的方式响应给前端即可&#xff0c;下面我们对HttpResponseServlet这个类做一些改造 package com.tomcatServer.domain;import com.tomcatServer.utils.ScanUtil;import java.io.IOException; import java.io…

MySQL的Json类型字段IN查询分组和优化方法

前言 MySQL从5.7的版本开始支持Json后&#xff0c;我时常在设计表格时习惯性地添加一个Json类型字段&#xff0c;用做列的冗余。毕竟Json的非结构性&#xff0c;存储数据更灵活&#xff0c;比如接口请求记录用于存储请求参数&#xff0c;因为每个接口入参不一致&#xff0c;也…

【TypeScript】基础类型

安装 Node.js 环境 https://nodejs.org/en 终端中可以查到版本号即安装成功。 然后&#xff0c;终端执行npm i typescript -g安装 TypeScript 。 查到版本号即安装成功。 字符串类型 let str:string "Hello"; console.log(str);终端中先执行tsc --init&#xf…

第二届人工智能与智能信息处理技术国际学术会议(AIIIP 2023)

第二届人工智能与智能信息处理技术国际学术会议&#xff08;AIIIP 2023&#xff09; 2023 2nd International Conference on Artificial Intelligence and Intelligent Information Processing 第二届人工智能与智能信息处理技术国际学术会议&#xff08;AIIIP 2023&#xf…

ATTCK实战系列——红队实战(一)

目录 搭建环境问题 靶场环境 web 渗透 登录 phpmyadmin 应用 探测版本 写日志获得 webshell 写入哥斯拉 webshell 上线到 msf 内网信息收集 主机发现 流量转发 端口扫描 开启 socks 代理 服务探测 getshell 内网主机 浏览器配置 socks 代理 21 ftp 6002/700…

CentOS 8.5修改安装包镜像源

1 备份原配置 cd /etc/yum.repos.d mkdir backup mv *.repo backup/2 下载镜像源 2.1 使用wget下载 wget http://mirrors.aliyun.com/repo/Centos-8.repo2.2 使用curl下载 我是安装的最小版本的系统&#xff0c;默认只有curl curl使用方法&#xff1a;https://www.ruanyife…

为什么爬虫要用高匿代理IP?高匿代理IP有什么优点

只要搜代理IP&#xff0c;度娘就能给我们跳出很多品牌的推广&#xff0c;比如我们青果网路的。 正如你所看到的&#xff0c;我们厂商很多宣传用词都会用到高匿这2字。 这是为什么呢&#xff1f;高匿IP有那么重要吗&#xff1f; 这就需要我们从HTTP代理应用最多最广的&#xf…

基于MATLAB开发AUTOSAR软件应用层Code mapping专题-part 2 Inport和Outports 标签页介绍

上篇我们介绍了Function页的内容,这篇我们介绍Inports和Outports页的内容,这里我们再次强调一个概念,code mapping是以simulink的角度去看的,就是先要在模型中建立simulink模块,在code mapping里映射他要对应的autosar的元素,之后生成代码时的c语言的名字是以Autosar的元…

【MySQL】好好学习一下InnoDB中的页

文章目录 一. 前言二. 从宏观层面看页三. 页的基本内容3.1 页的数据结构3.2 用户空间内的数据行结构3.3 页目录 四. 问题集4.1 索引 和 数据页 有什么区别4.2 页的大小是什么决定的4.3 页的大小对哪些情况有影响4.4 一般情况下说的链表有哪几个4.5 如果页的空间满了怎么办4.6 如…

m3u8视频怎么保存到本地?这个小妙招了解下

m3u8是一种视频文件格式&#xff0c;通常用于流媒体服务&#xff0c;可以将大型视频文件分割成较小的TS分段进行传输&#xff0c;从而使得视频的传输更加流畅和高效。。m3u8文件包含了一个视频播放列表&#xff0c;其中包含了所有的TS分段的URL地址&#xff0c;以及每个分段的时…

设计模式之代理模式(Proxy)的C++实现

1、代理模式的提出 在组件的开发过程中&#xff0c;有些对象由于某种原因&#xff08;比如对象创建的开销很大&#xff0c;或者对象的一些操作需要做安全控制&#xff0c;或者需要进程外的访问等&#xff09;&#xff0c;会使Client使用者在操作这类对象时可能会存在问题&…

企业百家号蓝V认证后,百度营销基木鱼落地页如何嵌入百家号中

首先搭建百度营销基木鱼落地页 在我们的百度营销后台&#xff0c;点击基木鱼跳转至百度营销基木鱼页面&#xff0c;在我的站点位置&#xff0c;可以创建H5站点&#xff0c;PC站点等&#xff0c;创建完成后可以点击复制基木鱼落地页的链接。 注意事项 1、企业百家号需要进行…

每天一道leetcode:127. 单词接龙(图论困难建图广度优先遍历)

今日份题目&#xff1a; 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> ... -> sk&#xff1a; 每一对相邻的单词只差一个字母。 对于 1 < i < k 时&#xff0c;每个 si 都在 wordList 中…

【Apollo】自动驾驶感知——毫米波雷达

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

docker compose的用法

目录 一、Docker-Compose介绍 1.1 Docker-Compose的概述 1.2 Docker-Compose 用来实现Docker容器快速编排 1.3 Docker-compose模板文件简介 二、YAML简介 2.1 YAML的概述 2.2 YAML的基本语法规则 2.3 YAML支持的数据架构 三、配置内部常用字段 四、Docker-compose 常…

Javaweb基础学习(3)

Javaweb基础学习 web核心介绍一、HTTP1.1 HTTP介绍1.2、HTTP请求数据格式1.3、HTTP响应数据格式 二、Tomcat2.1 简介2.2 基本使用2.3 Tomcat配置2.4 Tomcat部署项目2.5 Web项目结构2.6 创建Maven Web项目 三、Servlet3.1、Servlet简介&快速入门3.2 创建Servlet步骤3.3 Serv…