- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
Python趣味入门12:初遇类与实例
一提到类大神们就经常说封装。说白了,封装即把围绕同一个对象相同的代码、数据整合在一起。比如在某段游戏代码中(比如熊猫厨房),有一个面包:
1、游戏提供烘烤的操作。-很明显这是动作-类的方法
2、面包有硬度指数-很明显这是数据-类的属性
从一般情况看,动作可以通过编写函数完成,比如上面的烧烤,游戏可以通过函数绘制出烤箱烤面包的画面。数据就只通过变量来保存值就行,比如上面的硬度,我们可以通过0-10的数字去表示。
以上即包括函数又包括数据的结构,由于是服务于同一个对象的,所以就叫面向对象。
这是小牛叔最喜欢吃的面包
实例就是类的值,类相当于蓝本,实例相当于不同的个体。我们继续玩熊猫厨房的游戏,实际在游戏在完的过程中,每个人的屏幕上都会出现面包,这些个张三的面包、李四的面包就叫实例。这些个实例不一定有相同的属性值比如硬度不同,但是却是共享着相同的属性名称与方法,像是同一个蓝本里刻出来的。
比如在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这个变量当中,因此我们在这个方法中,为面包设置如下的属性,并且设置默认属性。
1classbread:
2def__init__(self):
3self.cooked_level=0
4self.cooked_string=Soft
5self.condiments=[]
6self.slices=1
如上的代码,self后紧跟的点号是引用实例的成员,如果不存在会被创建,上述初始化方法当中,定义了一个没有经过烤时间为0,非常软并且没有任何酱料的1小片切片白面包。
3.2定义其它方法
下面我们定义烤面包的方法,我们在class下面,再创建函数用来表示,这个cook函数的第1个参数self是系统要求的实例,并且根据烹饪时间来设置面包的状态。
classBread:
def__init__(self):
self.cooked_level=0
self.cooked_string=软嫩
self.condiments=[]
self.slices=1
defcook(self,time):
self.cooked_level+=time
ifself.cooked_level=10:
self.cooked_string=焦糊
elifself.cooked_level=8:
self.cooked_string=硬脆
elifself.cooked_level=6:
self.cooked_string=适中
elifself.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
文档评论(0)