62.Python 类的3要素语法

62.类的3要素语法

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

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值