62.Python 类的3要素语法

news2025/1/15 19:47:33

62.类的3要素语法

文章目录

  • 62.类的3要素语法
    • 1. 定义类的语法
    • 2. pass语句的作用
    • 3.我们学的5个缩进语法
    • 4.类的属性
    • 5.类的方法
    • 6. 创建对象
    • 7.类在爬虫中的应用
    • 8. 总结

1. 定义类的语法

定义类的语法如下:

class 类名:
            代码块

从语法上来看:类的定义是一个 class 语句,class 语句内包含了四个要素:

① 关键字class

② 类名,类名要大写

③ 英文冒号:

④ 代码块,代码块前有4个空格的缩进

在这里插入图片描述

【体验代码】

# 定义一个车类,类名为Cars
class Cars:
    pass 
  1. 定义类时首先要先敲一个class关键字

  2. class关键字后面跟上类名Cars,注意这里的类名是大写。

  3. 类名后跟上一个英文冒号:

  4. pass空语句,注意pass空语句前有4个空格的缩进

【温馨提示】

1. 类名的首字母要大写。

这里的Cars就是类名,它的首字母C就是大写。

首字母大写不是Python中的语法要求,可以理解成是一种程序员之间一种约定,让大家看到大写就知道是类。

类名是小写也不会报错,但大写是为了让其他程序员都能读懂你的代码,显的你也很专业!

2. 代码块前有4个空格的缩进。

2. pass语句的作用

pass空语句用于维持程序结构的完整。

我们在编程时若不想马上编写某些代码,又不想有语法错误,就可以用pass语句占位。

pass 语句是不会有任何输出内容的,他的存在是替代代码块,使程序不会报错。

我在这里使用pass空语句,是为了让使代码简洁,让大家更直观的感受类的语法结构。

3.我们学的5个缩进语法

  1. if 条件判断语句

  2. for 循环语句

  3. while循环语句

  4. 自定义函数

  5. 定义类

4.类的属性

红色的小轿车具有前进、刹车、倒车的基础功能。

蓝色的公交车也具有前进、刹车、倒车的基础功能。

确定类名:车类

确定属性:颜色、车型

确定方法:前进、刹车、倒车

类的定义完成之后,我们来编写类的属性。

直接写在类里的变量称为类属性。

属性的添加很简单,就是一个变量赋值语句。

【属性1:颜色】

color_1 = ‘红色’

color_2 = ‘蓝色’

color就是变量名,红色就是给变量赋的值。

【属性2:车型】

为了不增加大家的英语单词量,这里用type来表示车型。

type_1 = “小轿车”

type_2 = “公家车”

定义属性直接在类里写一个变量赋值的语句即可。

# 定义一个车类,类名为Cars
class Cars:
    # 直接写在类里的变量称为类属性
    color_1 = "红色"
    type_1 = "小轿车"

【代码解析】

color_1是变量名,"红色"是给变量赋的值。

type_1是变量名,"小轿车"是给变量赋的值。

color_1 = "红色"type_1 = "小轿车"这2个语句就是类的属性。

【总结】

属性,就是类创建出来的对象具有的特征。

直接写在类里的变量称为类属性。

5.类的方法

在类中定义方法的语法,跟我们之前学习过的定义函数是非常像的,也是一个def语句。

区别是:

在类之外定义的函数我们称之为自定义函数。

在类中被定义的函数称之为类的方法。

方法定义的语法如下:

class 类名 :
    def 方法名1(self , 其它参数):
        代码块

    def 方法名2(self , 其它参数):
        代码块
  1. 定义方法时首先要先敲一个def关键字

  2. def关键字后面跟上方法名

  3. 方法名后输入英文圆括号()

  4. 括号中输入的是方法的参数。

注意注意注意,方法的第一个参数必须是self

如果self后面有参数,就增加上参数,如果没有参数,就保证这个方法至少有一个self参数即可。

一般在类中定义方法第一个参数都是 self 参数,通常用来指对象本身。

self 参数背后涉及的原理较多,大家不需要深纠,把它当作一个固定格式即可。

  1. 英文冒号:

  2. 冒号之后是代码块,是方法要封装的功能。

【代码实操】

红色的小轿车具有前进、刹车、倒车的基础功能。

确定方法:前进、刹车、倒车

我们先写第一个方法:前进

前进的功能我们给它起个方法名叫drive

# 定义一个车类,类名为Cars
class Cars:
    # 直接写在类里的变量称为类属性
    color_1 = "红色"
    type_1 = "小轿车"

    # 汽车的基础功能之1:前进
    # 类的第1个方法
    def drive(self):
        print('汽车正在向前行驶!')

【代码解析】

  1. 定义方法的def关键字

  2. 方法名drive

  3. 英文圆括号()

  4. 括号中必须加入必要参数self

  5. 英文冒号

  6. 冒号下面是方法中的代码块,代码块是方法要封装的功能。这里用一个print语句替代,是为有个输出语句,让大家理解后面的调用。

Python实例中要封装的功能通常有访问网页、解析网页数据、保存爬取到的网页数据等等。

【课堂练习】

请编写代码,定义类剩下的2个方法。

确定方法:前进、刹车、倒车

考虑到很多同学的单词量。

这里刹车方法名用stop命名,stop方法的代码块内容为输出汽车来了个急刹!

倒车方法名用back命名,back方法的代码块内容为输出请注意,倒车!

【体验代码】

# 定义一个车类,类名为Cars
class Cars:
    # 直接写在类里的变量称为类属性
    color_1 = "红色"
    type_1 = "小轿车"

    # 汽车的基础功能之1:前进
    # 类的第1个方法
    def drive(self):
        print('汽车正在向前行驶!')

    # 汽车的基础功能之2:刹车
    # 类的第2个方法
    def stop(self):
        print('汽车来了个急刹!')
    
    # 汽车的基础功能之3:倒车
    # 类的第3个方法
    def back(self):
        print('请注意,倒车!')

6. 创建对象

我们之前讲过,类的作用是创建对象。

现在类的三要素已经齐全了,那我们接下来就可以创建对象了。

这就相当于菜洗好、切好后,接下来就要开始炒菜了。

当我们定义好一个类之后,如果想要创建一个对象,首先给对象起一个名字,也就是一个变量名。

生了宝宝后,要给宝宝起个名字。

我们做的每道菜也有它自己的名字。

类创建对象后,我们也要给它起个名字,要不然我们都不知道对象叫啥。

生产汽车我们通常会根据汽车的品牌、型号等给车命名,要不然都是4个轮子,一个发动机,没有名字我们也区分不开。

这里我们给我们马上要生产好的小轿车起个名字叫奥迪A6。

对象创建的语法如下:

对象名=类名()

等号的左边我们写给生产对象起的名字。

等号右边写类名,表示这个对象是根据这个类生产出来的。

类名后紧跟一对英文圆括号

【体验代码】

注意观察最后一行代码。

# 定义一个车类,类名为Cars
class Cars:
    # 直接写在类里的变量称为类属性
    color_1 = "红色"
    type_1 = "小轿车"

    # 汽车的基础功能之1:前进
    # 类的第1个方法
    def drive(self):
        print('汽车正在向前行驶!')

    # 汽车的基础功能之2:刹车
    # 类的第2个方法
    def stop(self):
        print('汽车来了个急刹!')
    
    # 汽车的基础功能之3:倒车
    # 类的第3个方法
    def back(self):
        print('请注意,倒车!')
        
# 创建对象
aodi_A6 = Cars( )      

【代码解析】

  1. 等号左边是对象名aodi_A6

  2. 等号右边是类名Cars

  3. 类名后紧跟一对英文圆括号

通过aodi_A6 = Cars( ) 这行代码,我们就利用Cars( )类创建出了一个aodi_A6对象。

7.类在爬虫中的应用

类的知识点相对抽象,初学者很难理解,下面我们通过一个实例来更深层次的理解类的作用。

下面是爬取某站视频的部分代码,大家重点关注类相关的知识点即可。

【备注】下面的代码不全,运行下面的代码是不会成功下载到视频的。

'''批量下载视频'''
import requests  # 网络请求模块
import time      # 时间模块
import random    # 随机模块
import os        # 操作系统模块
import re        # 正则表达式

# 哔哩哔哩小视频json地址
json_url = 'http://api.vc.bilibili.com/board/v1/ranking/top?page_size=10&next_offset={page}1&tag=%E4%BB%8A%E6%97%A5%E7%83%AD%E9%97%A8&platform=pc'

# 定义一个爬虫类,类名为Crawl
class Crawl():    
    def __init__(self):
        # 创建头部信息
        self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0'}

    # 类中定义的第1个方法,作用是访问网页
    def get_json(self,json_url):
        response = requests.get(json_url, headers=self.headers)
        # 判断请求是否成功
        if response.status_code == 200:
            return response.json()  # 返回json信息
        else:
            print('获取json信息的请求没有成功!')
    
    # 类中定义的第2个方法,作用是下载视频
    def download_video(self,video_url,titlename):
        # 下载视频的网络请求
        response = requests.get(video_url, headers=self.headers, stream=True)
        if not os.path.exists('video'):  # 如果video目录不存在时
            os.mkdir('video')             # 创建该目录
        if response.status_code == 200:   # 判断请求是否成功
            if os.path.exists('video'):
                with open('video/'+titlename+'.mp4', 'wb')as f:                     # 将视频写入指定位置
                    for data in response.iter_content(chunk_size=1024):             # 循环写入,实现一段一段的写
                        f.write(data)                                               # 写入视频文件
                        f.flush()                                                   # 刷新缓存
                    print('下载完成!')
        else:
            print('视频下载失败!')            
# 创建爬虫类对象:对象名=类名()
c = Crawl()  

【代码解析】

crawl[krɔːl]:爬虫

class Crawl():定义一个爬虫类,类名为Crawl。

def get_json(self,json_url):类中定义的第1个方法,作用是访问网页,获取网页的json数据。方法中的第1个参数为self

def download_video(self,video_url,titlename):类中定义的第2个方法,作用是下载视频。方法中的第1个参数为self

c = Crawl()创建爬虫类对象。创建对象的语法是对象名=类名()c是对象名,Crawl()是类名。

8. 总结

在这里插入图片描述

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

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

相关文章

Edify Script (Android Shell)定制Twrp刷机包

本文将通过三方面向大家介绍Edify Script,相信你看完了这篇文章会对安卓系统可刷写插件有一个比较完整的认识,并且能过通过阅读此文章实现使用twrp刷入自己写的插件zipi包。网上能搜到的大部分是旧的,新版本去掉了很多的edify函数,照着他们那个写多半会报错。 本文分为如下…

LeetCode学习-第三十八天

第三十八天 我使用的C,错误的地方请见谅,文章初衷仅用来督促本人学习,如果恰巧能够给你带来帮助,我会十分开心。 文章目录第三十八天一、537. 复数乘法二、29. 两数相除一、537. 复数乘法 复数 可以用字符串表示,遵循…

CentOS7如何修改IP地址及UUID

CentOS7系统下,如果要把IP地址修改为192.168.1.80,子网掩码是255.255.255.0,网关是192.168.1.1,DNS是192.168.1.1,那么我们使用客户端连接CentOS或者打开系统终端,切换到root用户,命令&#xff…

开料的目的和子流程,一文读懂

经过多个月的分享,关于PCB行业,想必朋友们已经有了一些个人的理解,甚至对PCB行业,还产生了浓厚的兴趣。 但是,PCB生产工艺是非常复杂的,想要深入地学习并且学好PCB生产工艺,假如不在PCB的生产一…

如何从PyTorch中获取过程特征图

一、获取Tensor 神经网络在运算过程中实际上是以Tensor为格式进行计算的,我们只需稍稍改动一下forward函数即可从运算过程中抓到Tensor 代码如下: base_feature self.extractor.forward(x) #正常的前向传递 featurebase_feature.detach() …

JavaScript 数据类型

文章目录JavaScript 数据类型JavaScript 拥有动态类型JavaScript 字符串JavaScript 数字JavaScript 布尔JavaScript 数组JavaScript 对象Undefined 和 Null声明变量类型JavaScript 数据类型 字符串(String)、数字(Number)、布尔(Boolean)、数组(Array)、…

基于java eclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版

基于java eclipsejspmysqlservletSpring的学生信息管理系统基础版 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言…

【Python百日进阶-数据分析】Day148 - plotly直方图:px.histogram()

文章目录四、实例4.1 带有 Plotly Express 的直方图4.1.1 基本直方图4.1.2 使用一个包含分类数据的列4.1.3 选择方箱的数量4.1.4 日期数据直方图4.1.5 分类数据的直方图4.1.6 访问计数(y 轴)值4.1.7 标准化类型4.1.8 直方图的外观4.1.9 一列不同值的几个…

MySQL基础篇第10章(创建和管理表)

1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步 。只有正确地把数据存储起来,我们才能进行有效的处理和分析。否则,只 能是一团乱麻,无从下手。 那么,怎样才能把用户各种经营相关的、纷繁复杂的数据&#xff…

npm 包 chalk-next 被开发者投毒,源码 SRC 目录被删除

一、事件简述 1月5日,有开发者在 twitter 中发文称遭遇了名为 chalk-next 的组件投毒事件,该组件存在收集配置信息和删除本地文件的恶意逻辑,当前 NPM 仓库已经下线了该组件。 chalk-next 组件的开发者也是 vue-admin-beautiful 项目的作者 …

配对交易策略设计

可交易的一个关键要求是两个股票的对数价格序列之间存在均衡关系。 而均衡关系由两个值描述:协整系数以及均衡值。一旦确定这两个值,它们就可以用来构建两种股票的对数价格的线性组合,即所谓的价差。配对交易是对价差均值回归特性的押注。当…

Gigabyte B450 Aorus Elite AMD Ryzen 5 3600电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板Gigabyte B450 Aorus Elite处理器AMD Ryzen 5 3600已驱动内存16GB Samsung DDR3 1600MHz已驱动硬盘Samsung 840 Evo 250GB已驱动显卡AMD Radeon RX570 4gb已驱动声卡Realtek ALC892已驱动网卡Realtek 8111G已驱动无线网卡蓝牙Asus AX3000 Dual Band PCI-E …

(一)云原生基础概念-容器-Kubernets

文章目录云原生云原生历程云原生技术范畴云原生与传统部署云原生关键技术传统vs微服务vsServerlessServerless容器分层复用模式容器运行构建镜像容器引擎架构-moby容器和VM之间的差异Kubernetes调度自动恢复水平伸缩总架构Master架构Node架构Pod一个kubernet架构VolumeDeployme…

【计组】GPU--《深入浅出计算机组成原理》(六)

​课程链接:深入浅出计算机组成原理_组成原理_计算机基础-极客时间 GPU 是随着计算机里面需要渲染三维图形的出现,而发展起来的设备。 一、GPU和图形渲染 完整的5 个步骤的渲染流程一般也被称为图形流水线(Graphic Pipeline) …

SREWorks v1.4 版本发布 | 离线安装 前端重构

在 v1.3 版本之后,SREWorks 团队收集了较多的用户反馈,大家普遍对于 SREWorks 的内网离线安装有较大的诉求。于是团队决定进一步增强这部分的安装能力。 前端工程部分 (frontend),为了开发者更加敏捷高效的协作开发,以及便于社区…

web(一)—— HTML基础(web标准、开发工具、标签)

目标能够理解HTML的 基本语法 和标签的关系 能够使用 排版标签 实现网页中标题、段落等效果 能够使用 相对路径 选择不同目录下的文件 能够使用 媒体标签 在网页中显示图片、播放音频和视频 能够使用 链接标签 实现页面跳转功能一、基础认知目标:认识 网页组成 和 五…

vite使用css的各种功能

1.使用公共的变量(:root)定义在root的变量可以进行类的使用 :root { font-size: 160px;--main-bg-color:red } .red{color:var(--main-bg-color) }你看这个hello world变得多大多红 2.vite使用postcss-plugins/console’ 2-1安装:cnpm install postcss-plugins/co…

最大公约数-欧几里得算法

最近在复习数论,欢迎来到数论的起点gcd 最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。 欧几里得算法(辗转相除法) 已知两个数a和b,求出两数的最大公约数首先证明: 不妨…

uni-app入门:组件的基本使用

1.组件概念 2.组件分类 2.1 基础组件 2.2 拓展组件 2.3 easycom规范 3.自定义组件以及使用 3.1局部注册 3.2全局注册 1.组件概念首先讲一下什么是组件 官方说法: 组件是视图层的基本组成单元。 组件…

MySQL高级【存储过程】

1:存储过程1.1:介绍存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发 人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过…