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

news2024/12/22 18:04:09

[目录]

文章目录

  • 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.总结

在这里插入图片描述

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

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

相关文章

Web3和去中心化:互联网的下一个演化阶段

文章目录 Web3和去中心化的定义Web3&#xff1a;去中心化&#xff1a; 为什么Web3和去中心化如此重要&#xff1f;数据隐私和安全&#xff1a;去中心化的创新&#xff1a;去除中间商&#xff1a; Web3和去中心化的应用领域去中心化金融&#xff08;DeFi&#xff09;&#xff1a…

wustojc2003求整数均值

#include <stdio.h> int main() {int a,b,c,d;double A;scanf("%d%d%d%d",&a,&b,&c,&d);A(double)((abcd)/4.0);//强转成doubleprintf("Sum %d\n",abcd);printf("Average %.2lf",A);return 0;}

C++笔记之基类指针动态地指向某一个子类情况列举

C笔记之基类指针动态地指向某一个子类情况列举 code review! 文章目录 C笔记之基类指针动态地指向某一个子类情况列举1.基本的多态示例2.基类中的成员函数可以设置为纯虚函数3.将基本示例修改为使用智能指针并在堆上实例化子类4.父类指针指向基类后&#xff0c;可以去调用只有…

【JUC系列-01】深入理解JMM内存模型的底层实现原理

一&#xff0c;深入理解JMM内存模型 1&#xff0c;什么是可见性 在谈jmm的内存模型之前&#xff0c;先了解一下并发并发编程的三大特性&#xff0c;分别是&#xff1a;可见性&#xff0c;原子性&#xff0c;有序性。可见性指的就是当一个线程修改某个变量的值之后&#xff0c…

shell脚本之sed

sed sed 即 Stream EDitor&#xff0c;和 vi 不同&#xff0c;sed是行编辑器 基本用法 sed [选项] 自身脚本用法 [支持输入标准输入管道] 常用选项&#xff1a;-n 不输出模式空间内容到屏幕&#xff0c;即不自动打印-e 多点编辑-f FILE 从指定文件中读取编辑脚本-r, -E 使用…

【TypeScript】内置对象

JavaScript 中很多内置对象&#xff0c;可以直接在 TypeScript 中当做定义好了的类型。 ECMAScript 的内置对象 Boolean、Number、String、RegExp、Date、Error、XMLHttpRequest 等 let num: Number new Number(1) let date: Date new Date() let reg: RegExp new RegExp(…

WTF Langchain极简入门: 03. 数据连接

加载文档 langchain提供多种文档加载器&#xff0c;支持多种格式、来源的文件。可以从本地存储系统加载文件&#xff0c;也可以从网上加载远端文件。想了解LangChain所支持的所有文档加载器&#xff0c;请参考Document Loaders。 在本系列课程中&#xff0c;我们将使用最基本…

Docker 搭建 LNMP + Wordpress(详细步骤)

目录 一、项目模拟 1. 项目环境 2. 服务器环境 3.任务需求 二、Linux 系统基础镜像 三、Nginx 1. 建立工作目录 2. 编写 Dockerfile 脚本 3. 准备 nginx.conf 配置文件 4. 生成镜像 5. 创建自定义网络 6. 启动镜像容器 7. 验证 nginx 四、Mysql 1.…

快速学习GO语言总结

备注&#xff1a;本博客将自己初步学习GO的总结进行分享&#xff0c;希望大家通过本博客可以在短时间内快速掌握GO的基本程序编码能力&#xff0c;如有错误请留言指正&#xff0c;谢谢&#xff01; 一、初步了解Go语言 &#xff08;一&#xff09;Go语言诞生的主要问题和目标…

shell脚本——expect脚本免交互

目录 一.Here Document 1.1.定义 1.2.多行重定向 二.expect实现免交互 2.1.基础免交互改密码 2.2.expect定义 2.3.expect基本命令 2.4.expect实现免交互ssh主机 一.Here Document 1.1.定义 使用I/O重定向的方式将命令列表提供给交互式程序&#xff0c;是标准输 入的一…

uniapp开发小程序,上传图片和视频功能

1.需求&#xff1a; 可以上传图片和视频&#xff0c;并且都可以删除&#xff0c;图片可以预览。 2.效果图 3.代码&#xff1a; <template><!-- 上传start --><view style"display: flex; flex-wrap: wrap;"><view class"update-file&quo…

FPGA解析串口指令控制spi flash完成连续写、读、擦除数据

前言 最近在收拾抽屉时找到一个某宝的spi flash模块&#xff0c;如下图所示&#xff0c;我就想用能不能串口来读写flash&#xff0c;大致过程就是&#xff0c;串口向fpga发送一条指令&#xff0c;fpga解析出指令控制flah&#xff0c;这个指令协议目前就是&#xff1a; 55 AA …

达梦数据库表空间创建和管理

概述 本文将介绍在达梦数据库如何创建和管理表空间。 1.创建表空间 1.1表空间个数限制 理论上最多允许有65535个表空间&#xff0c;但用户允许创建的表空间 ID 取值范围为0~32767&#xff0c; 超过 32767 的只允许系统使用&#xff0c;ID 由系统自动分配&#xff0c;ID不能…

周易卦爻解读笔记——小过

第六十二卦小过 雷山小过 震上艮下 小过卦为母卦&#xff0c;象征小有过越。 小过卦是中孚卦的错卦&#xff0c;序卦传【有信者必行之&#xff0c;故受之以小过】 小过&#xff1a;亨&#xff0c;利贞&#xff0c;可小事&#xff0c;不可大事。飞鸟遗之音&#xff0c;不宜上宜…

NEO-6M GPS模块 +无线透传模块组成短距离数据空中传输

NEO-6M GPS模块 无线透传模块组成短距离数据空中传输 &#x1f4cc;相关篇《GY-NEO6MV2 GPS模块测试》 &#x1f33f;NEO-6M GPS模块 &#x1f33f;透传模块采用的是GC2400-TC017 ✨数据的一收一发&#xff0c;需要配合一个USB转TTL工具&#xff0c;在电脑端通过串口调试助…

7-5 螺旋方阵

分数 20 全屏浏览题目 切换布局 作者 C课程组 单位 浙江大学 所谓“螺旋方阵”&#xff0c;是指对任意给定的N&#xff0c;将1到NN的数字从左上角第1个格子开始&#xff0c;按顺时针螺旋方向顺序填入NN的方阵里。本题要求构造这样的螺旋方阵。 输入格式&#xff1a; 输入在…

第3步---MySQL的DDL和DML操作

第3步---MySQL的DDL和DML操作 1.DDL操作 Data Defination Language 数据定义语言。创建数据库和表的不涉及到数据的操作。 1.1DDL基本操作 1.1.1数据库相关操作 ddl&#xff1a;创建数据库&#xff0c;创建和修改表 对数据库常见的操作&#xff1a; 操作数据库 -- 展示数据…

Unity 之 Input类

文章目录 总述具体介绍 总述 Input 类是 Unity 中用于处理用户输入的重要工具&#xff0c;它允许您获取来自键盘、鼠标、触摸屏和控制器等设备的输入数据。通过 Input 类&#xff0c;您可以轻松地检测按键、鼠标点击、鼠标移动、触摸、控制器按钮等用户输入事件。以下是关于 I…

拥塞控制(TCP限制窗口大小的机制)

拥塞控制机制可以使滑动窗口在保证可靠性的前提下&#xff0c;提高传输效率 关于滑动窗口的属性以及部分机制推荐看TCP中窗口和滑动窗口的含义以及流量控制 拥塞控制出现的原因 看了上面推荐的博客我们已经知道了&#xff0c;由于接收方接收数据的能力有限&#xff0c;所以要通…

js IntersectionObserver简单案例

效果 源码 <!DOCTYPE html> <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&q…