首页 > 编程语言 >Python趣味入门12:初遇类与实例

Python趣味入门12:初遇类与实例

时间:2023-12-31 11:22:27浏览次数:31  
标签:面包 12 string level Python self cooked 初遇 实例

小牛叔用轻松有趣的故事,带你进入Python的编程世界。

1、类

一提到类大神们就经常说封装。说白了,封装即把围绕同一个对象相同的代码、数据整合在一起。比如在某段游戏代码中(比如熊猫厨房),有一个“面包”:

1、游戏提供“烘烤”的操作。 -> 很明显这是动作 -> 类的方法

2、面包有硬度指数 -> 很明显这是数据 -> 类的属性

从一般情况看,“动作”可以通过编写函数完成,比如上面的“烧烤”,游戏可以通过函数绘制出烤箱烤面包的画面。“数据”就只通过变量来保存值就行,比如上面的“硬度”,我们可以通过0-10的数字去表示。

以上即包括函数又包括数据的结构,由于是服务于同一个对象的,所以就叫面向对象。

这是小牛叔最喜欢吃的“面包”

3、实例

“实例”就是“类‘的”值“,类相当于蓝本,实例相当于不同的个体。我们继续玩熊猫厨房的游戏,实际在游戏在完的过程中,每个人的屏幕上都会出现“面包”,这些个张三的面包、李四的面包就叫实例。这些个实例不一定有相同的属性值比如“硬度”不同,但是却是共享着相同的属性名称与方法,像是同一个蓝本里刻出来的。

比如在Python中所有的整数,只要出现的整数其实都是int这个类的实例。

Python系统当中大部分的东东都是类,我们之前学习的str-字符串,int-整数,其实都是不同的类,我们用type这个语句就可以查看某个实例是什么类。

type语句 - 某个值(实例)是什么类

3、定义类

在此分析一下"面包"的属性:

  • slices:指使用了几片切片
  • condiments:面包上配料的列表,比如番茄酱、芥末酱等
  • cooked_level:一个数字,通过这个属性知道面包被烤程度
  • cooked_string:一个字符串,描述面包烤出来的软硬程度

再来分析一下面包的方法:

  • cook():把面包片烤一段时间,这会让面包比较硬容易抹黄油
  • add_slice():加入一个切片
  • add_condiment():加入一些配料

3.1 __int__() 初始化方法

首先定义类中的4个属性,属性我们通过在类中定义__init__()函数来实现,这个函数名称每个类都一样,系统在实例被生时首先执行这个函数的代码,并且把实例传递到self这个变量当中,因此我们在这个方法中,为面包设置如下的属性,并且设置默认属性。

1 class bread:
2     def __init__(self):
3         self.cooked_level = 0
4         self.cooked_string = 'Soft'
5         self.condiments = []
6         self.slices = 1

 

如上的代码,self后紧跟的点号是引用实例的成员,如果不存在会被创建, 上述初始化方法当中,定义了一个没有经过烤时间为0,非常软并且没有任何酱料的1小片切片白面包。

3.2 定义其它方法

下面我们定义烤面包的方法,我们在class下面,再创建函数用来表示,这个cook函数的第1个参数self是系统要求的实例,并且根据烹饪时间来设置面包的状态。

class Bread:
    def __init__(self):
        self.cooked_level = 0
        self.cooked_string = '软嫩'
        self.condiments = []
        self.slices = 1
    def cook(self,time):
        self.cooked_level += time
        if self.cooked_level>=10:
            self.cooked_string = '焦糊'
        elif self.cooked_level>=8:
            self.cooked_string = '硬脆'
        elif self.cooked_level>=6:
            self.cooked_string = '适中'
        elif self.cooked_level>=3:
            self.cooked_string = '稍软'
        else:
            self.cooked_string = '软嫩'

 

可以看到我们通过cook这个动作,函数可以根据烤的时间来改变面包的软硬属性cooked_string。

假设游戏刚开始,Joe刚开始准备烤面包, 在同一个文件里,我们接着顶格写如下的代码:

joeBread = Bread()
print("烤时间",joeBread.cooked_level)
print("切片数",joeBread.slices)
print("口感",joeBread.cooked_string)
print("配料",joeBread.condiments)

  

运行的结果如下:

烤时间 0
切片数 1
口感 软嫩
配料 []

  

此外,还要注意到目前为止,定义类的时候目前均是采取首字母大写的方式,在Python代码约定当中,Word一般是作为类名,而word则是作为实例名称,这样通过观察变量或是类的名称,就知道所代表的意义。

然后再试试cook这个方法有没有效果,在上面的语句后面继续填加如下的语句:

1 print('Joe开始烤8分钟')
2 joeBread.cook(8)
3 print("口感",joeBread.cooked_string)
4 print("烤时间",joeBread.cooked_level)

 

这些语句的运行的结果如下图:

Joe开始烤8分钟
口感 硬脆
烤时间 8

以上编写的cook() 方法可以正常工作,经验证面包被烤了8分钟后,不仅烤时发生了变化,而且面包的口味果然变成了“硬脆”的状态,小牛叔可不喜欢吃硬的!

 

---小牛书0基础Python系列教程---

【每天1篇1周入门,请点击下方的喜欢和收藏,以备学习】

标签:面包,12,string,level,Python,self,cooked,初遇,实例
From: https://www.cnblogs.com/dosboy/p/17937319

相关文章

  • 2023.12.31做题纪要
    TJOI2015弦论身为彩笔的我觉得这道题还不错???对于新学的我来说挺考验对\(SAM\)的理解??要用一个类似洛谷\(SAM\)板子题的数组来记录每个节点的\(right(endpos)\)集合的大小。最后维护一下就行了。主要难在证明。晴天#include<bits/stdc++.h>constintMAXN=3*(5......
  • 2023-2024-1 20231412 《计算机基础与程序设计》第14周学习总结
    2023-2024-120231412《计算机基础与程序设计》第14周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP这个作业要求在哪里https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/homework/13011这个作业的目标《C......
  • Python实搞:自动给文本标注拼音并输出excel
    一、为什么要搞?前几天有同学在讨论家中小盆友的作业问题,说连一些拼音作业的难度已经超出了能力范围,感叹自己已经比不上现在的小学生了。听得滋滋有味的我又产生了一个大胆的想法:使用Python自动在每个文字的上方标注拼音预期输出示例如下:二、准备如何搞?查阅一番资料后,发现一个神奇的......
  • Python调用 "keybd_event" API模拟按键
    在Python中,可以使用ctypes库来调用WindowsAPI,实现对Windows系统的底层操作。本文将以模拟按键操作(ctrl+v)为例,详细讲解如何在Python中调用WindowsAPI。1.导入ctypes库ctypes是Python的一个外部函数库,它提供了丰富的数据类型,便于调用DLL或共享库中的函数。......
  • python 运算符 列表操作 元组
    可以对字符串进行切片访问(同时适用于字符、列表、元组等)。字符串从左往右,索引从0开始;从右往左,索引从–1开始。可以取字符串中的片段,切片索引按左闭右开原则:var='HelloWorld!'#按索引取部分内容,索引从0开始,左必须小于右#支持字符、列表、元组var[0]#'H'#从右往......
  • 【python爬虫课程设计】大数据分析——有多少人花时间通过身体测量来思考自己的健康状
    一、选题背景介绍在现代快节奏的生活中,越来越多的人开始关注自己的健康状况,并采取积极的措施来改善和维持健康。体重是一个重要的身体指标,对于评估健康状况和制定健康计划具有重要意义。通过定期测量体重,人们可以了解自己的体重变化趋势,并将其与健康目标相比较。体重的增加或减......
  • Python解析命令行参数
    Python解析命令行参数获取命令行参数在Python中命令行参数通过sys.argv传递,它是一个list类型,其中的元素为字符串。importsysdefcli_parser():print(f"参数个数:{len(sys.argv)}")print(f"参数列表:{str(sys.argv)}")print(f"脚本名:{sys.argv[0]}")for......
  • 2023-12-30-aliyun-dev-env
    阿里云开发环境搭建开发的烦恼依赖很多的中间件,每天的本地开发都要启动很多的中间件服务。不但启动反锁,还严重占用电脑硬件资源。于是,想起了不久前购买的云服务器。服务器配置只是一台配置简陋的云服务器,勉强可以分摊一部分的中间件服务。如何快速访问通过创建密钥对来实......
  • linux部署Python UI自动化项目过程
    1.安装chrome浏览器下载访问谷歌中文网站:GoogleChrome网络浏览器。将页面滑到最下面,点击其他平台,在弹出的页面选择linux选择对应的系统版本进行下载。下载后的deb包默认是arm架构,rpm包默认是x86架构的。所以在选择的时候要对应的系统架构选择安装包,可以通过lscpu查看......
  • Python NumPy 生成随机数的方法及示例
    ​ NumPy是一个强大的库,用于数值计算,包括生成各种随机数。可以使用random.rand()、random.randn()、random.randint()、random.uniform()、random.normal()和random.seed()函数方法生成随机数。本文介绍生成随机数的方法,以及相关的示例代码。1、numpy.random.rand()numpy.ra......