内容正文:
任务7.1 对象与类
电影对象的定义和使用
7.1 对象与类——电影对象的定义和使用
【任务描述】
优秀的影片 可以鼓舞人心,带给人积极向上的心态。小T酷爱看电影,他从某影评网站收集了几部评价较高、他也较感兴趣的国产电影信息(包括电影名、导演、主演等字段)。他打算一周之内把这几部电影看完,并在看完之后对每部影片进行评分。要求输出已看电影的评分、已看电影部数、已评电影的均分,并释放已看过的电影资源。
7.1 对象与类——电影对象的定义和使用
【任务分析】
我们可以构建电影类来完成本任务,思路如下:
(1)定义电影类,在类中定义相应的变量、方法,实现存储电影信息,计算电影评分等功能。
(2)把每部电影作为对象进行创建,创建的电影就是本周需要看的电影。
(3)每看完一部,就对电影进行评分、计算均分、输出信息并释放资源。
7.1 对象与类——电影对象的定义和使用
什么是类?
怎么定义类和对象?
怎么定义和使用类的变量与方法?
7.1.1 类的定义和使用
7.1.2 数据成员的访问
7.1.3 成员方法的调用
7.1.4 任务实现——电影对象的定义和使用
7.1 对象与类——电影对象的定义和使用
7.1.4 类与对象任务实现——电影对象的定义和使用
7.1.4 类与对象任务实现——电影对象的定义和使用
【任务描述】
优秀的影片可以激励、鼓舞人,小T打算对某影评网站上的高分电影一一进行赏析,他通过Python面向对象的方法来制定观影计划,构建电影对象,并对每部影片进行评分,输出近期已看电影部数、已评电影的均分,并释放已看过的电影资源。
7.1.4 类与对象任务实现——电影对象的定义和使用
【任务分析】
可以通过构建电影类来解决本任务,思路如下:
(1)定义电影类,在类中定义相应的变量、方法,其中电影名、导演、主演等基本信息在构造函数中初始化,将计算电影数目、已看电影数目、评分等功能定义为类变量。
(2)创建__init__()函数,完成电影名、导演、主演等基本信息的初始化工作,同时完成电影数目自增功能。
(3)__del__()函数,完成释放资源工作。
(4)定义评分方法,完成对电影的评分、计算评分均分、计算已看电影数目等功能。
(5)定义输出方法,打印已看电影的评分、已看电影部数、已评电影的均分等信息。
(6)创建多部电影对象。
(7)每看完一部,调用(4)、(5)方法,并del电影资源。
7.1.4 类与对象任务实现——电影对象的定义和使用
电影
电影类和对象的创建
电影评分
电影平均分
电影资源示范
7.1.4 类与对象任务实现——电影对象的定义和使用
定义电影类
(1)定义电影类,定义电影数目、已看电影数目、评分等为类变量。
(2)创建__init__函数,完成电影名、导演、主演等基本信息的初始化工作,同时完成电影数目自增。
定义类变量要看电影部数、电影平均分、已看电影部数
__init__方法初始化电影名、导演、主演、评分及本周要看电影部数
__del__方法释放已看电影资源
接下页
(3)__del__函数,完成释放资源工作。
7.1.4 类与对象任务实现——电影对象的定义和使用
定义类方法输出电影信息
创建本周要看电影对象
(4)定义评分方法,完成对电影的评分、计算评分均分、计算已看电影的数目等功能。
(5)定义输出方法,打印已看电影的评分,已看电影部数,已评电影的均分等信息。
定义成员方法,设置评分并求电影平均分
对每一部看完的电影评分、显示信息、释放资源
接上页
(6)创建本周要看的多部电影对象。
(7)每看完一部,调用(4)、(5)
方法,并del电影资源。
7.1.4 类与对象任务实现——电影对象的定义和使用
(1)定义电影类,在类中定义相应的变量、方法,其中电影名、导演、主演等基本信息在构造函数中初始化,计算电影数目、已看电影数目、评分等功能定义为类变量。
(2)创建__init__函数,完成电影名、导演、主演等基本信息的初始化工作,同时完成电影数目自增。
(3)__del__函数,完成释放资源工作。
(4)定义评分方法,完成对电影的评分、计算评分均分、计算已看电影的数目等功能。
(5)定义输出方法,打印已看电影的评分,已看电影部数,已评电影的均分等信息。
(6)创建多部电影对象。
(7)每看完一部,调用(4)、(5)方法,并del电影资源。
7.1.4 类与对象任务实现——电影对象的定义和使用
(1)定义电影类,定义电影数目、已看电影数目、评分等为类变量
class Movie():
count=0 # 本周计划看的电影数
averageMark=0 # 已看电影的平均分
countSeen=0 # 本周要看的电影数
7.1.4 类与对象任务实现——电影对象的定义和使用
(2)创建__init__函数,完成电影名、导演、主演等基本信息的初始化工作,同时完成电影数目自增。
def __init__(self,name,director,actors):
self.name=name # 电影名
self.director=director # 电影导演
self.actors=actors # 电影主演
self.mark=0 # 电影评分
Movie.count=Movie.count+1 # 计划本周要看的电影数
7.1.4 类与对象任务实现——电影对象的定义和使用
(3)__del__函数,完成释放资源工作。
def __del__(self): # 释放已看电影资源 print("电影《%s》资源释放。"%(self.name))
7.1.4 类与对象任务实现——电影对象的定义和使用
(4)定义评分方法,完成对电影的评分、计算评分均分、计算已看电影的数目等功能。
def setMark(self,mark): # 看完电影并进行评分 self.mark=mark #评分分数 Movie.countSeen+=1 # 已看电影累计部数
Movie.averageMark=(Movie.averageMark*(Movie.countSeen-1)+mark)/Movie.countSeen # 已看电影评分均值
print("电影《%s》已看,小T给予的评分是%.1f。"%(self.name,self.mark))
7.1.4 类与对象任务实现——电影对象的定义和使用
@classmethod
def displayMovie(cls): # 输出综合信息
print("这周计划看%d部电影,已看%d部电影,小T给予的评分均值是%.1f分。"%(cls.count,cls.countSeen, cls.averageMark))
(5)定义输出类方法,打印已看电影的评分,已看电影部数,已评电影的均分等信息。
7.1.4 类与对象任务实现——电影对象的定义和使用
movie1= Movie('霸王别姬','陈凯歌','张国荣/张丰毅')
movie2=Movie('我不是药神','文牧野','徐峥/王传君')
movie3=Movie('无间道','刘伟强','刘德华/梁朝伟')
movie4=Movie(' 活着','张艺谋','葛优/巩俐')
movie5=Movie('大闹天宫',' 万籁鸣','岳峰/富润生')
(6)创建本周要看的多部电影对象。
7.1.4 类与对象任务实现——电影对象的定义和使用
#看完每部写这以下三句代码
#看完第一部
movie1.setMark(9.4)
movie1.displayMovie()
del movie1
#看完第二部
movie2.setMark(9.0)
movie2.displayMovie()
del movie2
电影《霸王别姬》已看,小T给予的评分是9.4。这周计划看5部电影,已看1部电影,小T给予的评分均值是9.4分。电影《霸王别姬》资源释放。
电影《我不是药神》已看,小T给予的评分是9.0。这周计划看5部电影,已看2部电影,小T给予的评分均值是9.2分。电影《我不是药神》资源释放。
(7)每看完一部,调用(4)、(5)方法,并del电影资源。
$$