实训11:影视作品相关类的定义与实现【附完整代码】

在本实训中,将根据项目中的影视作品详情信息的示例数据文件(项目根目录下的static/jsons/video/vid_changzheng_ds.json)中的相关信息,定义一个影视作品详情类,用于表示影视作品的详情信息。具体步骤如下:

1. 查看vid_changzheng_ds.json文件中的数据结构,确定影视作品详情类需要包含的相关属性,如图1所示。从图中可见,文件中的影视作品详情是一个JSON对象,通过json模块的load()方法加载后可转换为Python中的字典结构,转换后字典的键(key)的命名方式采用的是驼峰命名格式(一种程序设计语言中的标识符命名格式,其特点是:如果变量或函数名等的标识符由多个单词组成的,则第一个单词的首字母小写,从第二个单词开始,首字母用大写)。图1 vid_changzheng_ds.json文件的数据结构

{
    "videoId": "v00100001",
    "videoName": "长征",
    "videoType": "ds",
    "videoPic": "images/video/vid_cz_ds.jpg",
    "videoPublisher": "中国中央电视台",
    "videoDetail": "vid_changzheng_ds.json",
    "videoDescription": "24集电视剧《长征》是由王朝柱编剧,金韬、唐国强共同执导,唐国强、刘劲、陈道明、王伍福、杨猛等主演的一部红色革命类电视剧。该剧主要讲述了中国共产党领导的红军在长征过程中的艰难历程和英勇事迹。其中,唐国强饰演的是毛泽东一角。他是中国著名演员,曾在多部影视作品中扮演毛泽东,被誉为“毛泽东专业户”。他的表演风格深入人心,将毛泽东的领袖气质和人情味淋漓尽致地展现出来。",
    "videoWriter": ["王朝柱"],
    "videoDirector": ["金韬", "唐国强"],
    "videoStars": ["唐国强","刘劲","王伍福","陈道明","张琳"],
    "videoYear": "2001",
    "videoSetsNum": 24,
    "videoOrigin": "中国大陆",
    "videoCatg": "历史,军旅,其他",
    "videoLanguage": "普通话",
    "videoFirstPlayTime": "2001-06-14",
    "videoSetsStory": [
        {
            "title": "长征 第1集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_1.jpg"],
            "description": "1934年4月,中央苏区的北大门广昌已成为蒋介石进攻的目标了。以博古(张世汇饰)为首的中共中央,不顾朱德(王伍福饰)、周恩来(刘劲饰)等人的反对,调集红军主力一、三、九军团的九个师坚守广昌,同有着优势兵力和武器装备的敌人拼消耗。毛泽东(唐国强饰)虽被罢免了军事指挥权,任中华苏维埃主席,但为尽一个共产党人的职责,又向党中央提出了诱敌深入,寻机歼灭敌人有生力量的积极防御战略。遗憾的是遭到了博古和共产国际派来的军事顾问李德的坚决反对。周恩来也因赞同毛泽东的建议被留守瑞金。4月10日,国民党军队向广昌进攻。用飞机轮番轰炸,用大炮猛烈轰击。我军尽管给敌人以重创和打击,红一、三军团也遭受重大损失。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第2集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_2.jpg"],
            "description": "毛泽东(唐国强饰)在会昌调查研究和指导工作。他了解到南线陈济棠与蒋介石(陈道明饰)矛盾重重,欲将红军战略转移的突破口选在南线;他深入群众,组织游击队打入被粤军占领的筠门岭做工作,宣传红军的主张。此时,中央打来电话要毛泽东立即回瑞金。周恩来(刘劲饰)提议在政治局会议上传达共产党国际同意红军转移的指示。受到李德、博古(张世汇饰)的反对。在政治局会议上,李德(谢尔盖・格奥尔吉饰)、博古否定了毛泽东向湖南中部转移,调动江西敌人至湖南消灭的意见,遂成立了以李德、博古、周恩来为首的三人团,秘密实施长征前的准备工作。周恩来筹划组建中国工农红军北上抗日选遗队和红六军团退出湘赣边界向湖南中部挺进的计划;委托毛泽东编写《游击战争》的小册子;秘密接触南天王陈济棠的幕僚,为红军战略转移创造有利条件;巧妙地为邓小平(安荣生饰)安排工作。同时,他还说服李德、博古允许毛泽东一起转移。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第3集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_3.jpg"],
            "description": "李德因共产国际不同意他以毛泽东(唐国强饰)、周恩来(刘劲饰)赴苏养病为名,实将毛、周从苏区调走的建议而恼怒。他粗暴地对待烧开水的战士,受到总参谋长刘伯承的严厉批评。毛泽东就要去往于都为红军突围转移进行实地考察了。已有身孕的贺子珍默默地为毛泽东整理行装。中华苏维埃中央人民银行行长毛泽民用自己仅有的两块银元为侄子小毛买糖。为妥善保管红军的秘密金库,毛泽东提出:分散管理,多留些给苏区部队的原则。李德霸道地免去了刘伯承总参谋长的职务,周恩来借机安排刘伯承为红五军团参谋长。副总参谋长叶剑英接替总参谋长职务,实施转移方案。正在这时,机要参谋报告:陈毅同志在前线负了重伤。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第4集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_4.jpg"],
            "description": "1934年10月,大队红军从于都出发,迅速渡过了于都河,并以迅雷不及掩耳之势秘密通过了敌人的第一、二、三道封锁线。与此同时,红六军团经过78天的西征突围作战与红二军团在湘西会师。博古(张世汇饰)和李德过高地估计了红军的军事力量,仍坚持按预定的路线到湘西与红二、六军团会师。周恩来(刘劲饰)“应慎重研究未来红军行军方向”的主张被博古否定了。彭德怀提出的必须力避与敌在湘江一带决战的军事建议同样遭到李德的拒绝。毛泽东(唐国强饰)针对奔袭湘江的作战命令会给数万红军带来的严重损失,连夜找“三人团”请示复议作战计划。李德不耐烦地指责毛泽东不要危言耸听。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第5集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_5.jpg"],
            "description": "蒋介石(陈道明饰)委任湘军何键(潘虹饰)为追剿司令,薛岳(师小红饰)为追剿军前敌总指挥,共商追堵红军在湘江会战的作战方案。红军攻下了道县,毛泽东更加焦急,决定由洛甫说服“三人团”千万不要过潇水,让红军先头部队首先渡过湘江。然而,白崇禧为了保护广西地盘,在湘江南岸布置了专门攻击红军后卫部队的作战计划。数万红军的生命危在旦夕。李德、博古等一次又一次地否决毛泽东(唐国强饰)、彭德怀(姚居德饰)等同志的正确建议,红军在突破敌人第四道封锁线渡过湘江时,与国民党军队展开了浴血奋战。白崇禧在蒋介石数度电令之下,向红军发起进攻。我军顽强作战,给敌人以重创,但也付出发惨重的代价。为确保中央纵队左右翼的安全,彭德怀和杨尚昆(隋杼洋饰)亲临五师阵地督战,并电请中央纵队和军委纵队快速过江。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第6集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_6.jpg"],
            "description": "周恩来(刘劲饰)与朱德(王伍福饰)共同研究过江方案。为了加快行军速度,中革军委命令:必须扔掉一切不必要的坛坛罐罐。毛泽东(唐国强饰)在行军中以祠堂为话题,与王稼祥(张琳饰)、洛甫(郑强饰)谈论共产党人必须立一条规矩,任何人不得利用手中的权力吓唬同志,更不允许拿瞎话当真话,欺骗同志,愚弄百姓。在湘江桥头,周恩来用嘶哑的声音指挥红军冒着敌人的炮火快速过桥。在中革军委的指挥所里,叶剑英(马铭饰)报告了指挥员们分散到各个战场情况。李德要求恢复部队建制。博古(张世汇饰)要李德面对现实。渡过湘江后,红军的处境仍然极端危险。这时,蒋介石已判明红军的意图,有通往湘鄂西的路上部署了重兵,准备在这里围歼红军的主力。主力红军渡过湘江之后,整个队伍已由8万多人锐减到3万多人。博古拿着一支手枪似准备自杀。遂被聂荣臻(马刚饰)劝阻。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第7集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_7.jpg"],
            "description": "刘富带向毛泽东(唐国强饰)控诉白军还乡团的罪行,哭诉游击队队长阿玉牺牲的情景。毛泽东在长时间的凝思后,以大无畏的气魄咏叹《十六字令》。李德顽固坚持原定北出湘西同红二、六军团会合的方案。毛泽东(唐国强饰)力主放弃。他的正确意见得到与会者的赞同。但李德、博古(张世汇饰)仍以“三人团”的名义坚持北去湘江的计划。周恩来(刘劲饰)接受洛甫的建议,在黎平召开政治局会议。同时,决定由刘伯承任中革军委总参谋长兼军委纵队司令。周恩来(刘劲饰)把会议决定向李德通报,李德大发雷霆。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第8集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_8.jpg"],
            "description": "红军突然挥师西进贵州,打乱了蒋介石(陈道明饰)的部署。蒋介石电令何健(潘虹饰)坚持在湘黔交界张网,坐等红军。贺龙(马云青饰)所部危逼常德。何健借机调湘军嫡系回援常德。蒋介石密电薛岳拿下镇远,控制贵阳,并命贵州军阀王家烈在遵义消灭红军。贵州军阀王家烈则欲借红军或蒋介石之手消灭对手侯之担。蒋介石对参谋团主任贺国光交待控制西南诸省的构想,让他立即入川,命刘湘派精锐部队陈兵长江南岸,并密切注视川北红军的动向,勿让朱毛红军与其会合。王家烈召集属下共商消灭红军的策略。侯之担当众保证红军插翅也飞不过乌江。周恩来(刘劲饰)向刘伯承转达了北渡乌江、西进遵义的决定,并征询刘伯承的意见。李德在险恶的山路上煽动博古说服周恩来,企图否定黎平会议的决定。毛泽东审时度势,要求在办好内部事情的同时,还要协助周恩来渡过乌江。红军队伍在群山起伏的大山中长途跋涉。王稼祥与聂荣臻(马刚饰)等高级将领交换意见。王稼祥与洛甫(郑强饰)商讨由毛泽东(唐国强饰)来领导红军。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第9集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_9.jpg"],
            "description": "刘伯承(张再新饰)在红一军团临时指挥部向林彪、聂荣臻(马刚饰)了解抢渡乌江的情况。红军巧装黔军冒雨夜袭遵义城。各界百姓倾城而出,欢迎红军。为了开好中央政治局扩大会议,刘伯承从军事上做了周密的布置;朱德(王伍福饰)提出要发扬民主畅所欲言的建议与毛泽东(唐国强饰)不谋而合。毛泽东与洛甫(郑强饰)、王稼祥(张琳饰)商讨遵义会议的议题。洛甫、王稼祥同毛泽东的老师徐特立来见毛泽东。毛泽东在胡班长的陪同下颇有兴致地观赏遵义的街景,碰到一位老年女干人,毛泽东给她两块银元并告诉她:红军就是为穷人为干人打天下的军队。刘英(陈一芳饰)在遵义招募新兵,胡班长(张会仓饰)等协助刘英办理青年参加红军的手续。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第10集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_10.jpg"],
            "description": "遵义会议在1935年1月15日至17日举行。它的目的之一,是检查在反第五次“围剿”与西征中军事指挥的经验与教训。周恩来在发言中全力推举毛泽东(唐国强饰)领导红军,他的倡议得到多数人的支持,会议做出了增选毛泽东为常委,协助周恩来负责军事;取消三人团,仍由朱德(王伍福饰)、周恩来为军事指挥者等决议。此时,得知薛岳按蒋介石的命令,已向遵义集结,妄图把红军消灭在遵义一带,情况十分严重,周恩来向彭德怀交待作战任务:此役关系遵义会议能否顺利完成。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第11集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_11.jpg"],
            "description": "周恩来宣布撤离土城,西渡赤水河。朱德(王伍福饰)负责掩护撤退。朱毛手挽手走过浮桥。红军向川滇黔三省边界的扎西地区前进。毛泽东(唐国强饰)提议,决定洛甫(郑强饰)代替博古。红军召开了扎西会议。毛泽东总结了土城战役失败的教训,周恩来宣布下阶段任务。蒋介石(陈道明饰)发现中央红军在扎西集结,判断红军仍将北渡长江。遂急调国民党主力大部向川滇黔边境推进。毛泽东审时度势,走出一招绝棋:挥师东进,再渡赤水,重占遵义,开始了二渡赤水的战役。蒋介石(陈道明饰)获悉红军二渡赤水重返黔北,急派中央军堵截。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第12集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_12.jpg"],
            "description": "毛泽东(唐国强饰)亲自布置攻占遵义的作战计划。并将攻占娄山关的重任交由彭德怀、杨尚昆统一指挥。毛泽东断定薛岳所部两天之内难以赶到遵义求援,命令红一、三军团连续作战,向遵义发起猛攻。红三军团参谋长邓萍中弹牺牲,由叶剑英接任此职。我军终于取得二占遵义的巨大胜利。中革军委签发命令任命毛泽东为前敌总政治委员。蒋介石败后又调整部署,指挥各部人马向遵义合围。中革军委批准了毛泽东“声东击西”的方案,红军主力向遵义以西鸭溪运动。蒋介石(陈道明饰)从各路情报中获知毛泽东动向,改变了战役部署。毛泽东(唐国强饰)依敌我双方态势在鸭溪按兵不动,静观待变。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第13集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_13.jpg"],
            "description": "林彪、聂荣臻向中央建议攻打打鼓新场遭到反对。毛泽东(唐国强饰)冲贺子珍发了一通牢骚。随后接到的情报证明:毛泽东是正确的。毛泽东、周恩来、王稼祥三人负责指挥红军的行动。红军在鸭溪按兵不动十多天。蒋介石(陈道明饰)下令杀回乌江西岸,准备在此歼灭红军。毛泽东指挥攻打周浑元两个师,意将敌人全部西调,周浑元取攻势防御与红军决战,待蒋介石派增援兵,红军又连夜撤出战斗向茅台转移。毛泽东在茅台镇为与红四方面军会师进行了整体战略部署。提出“调出滇军就是胜利”,周恩来为实施战略部署提出“佯攻似真”“行动机密”的要求。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第14集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_14.jpg"],
            "description": "蒋介石(陈道明饰)在重庆密切注视红军的动向,认为红军反复无常是陷入绝境,下令在古蔺地区收紧包围圈欲歼灭红军于此地,黔北的中央军、川南的川军,在荒野上的滇军疲惫不堪地向古蔺集结。毛泽东(唐国强饰)突然下令挥兵东进,四渡赤水河。蒋介石大骂属下“饭桶”,携夫人飞往贵阳亲自指挥。四渡赤水后,红军开始实施整体战略的第二步,把滇军调出云南。刘伯承(张再新饰)命红九军团佯装红军主力北上;红一、三、五军团隐蔽行军南下,迅速进抵乌江。红军主力迅速抵达乌江,因敌军防范甚严,红军在狂风暴雨中抢渡乌江成功。为掩护主力向云南急进,红军佯攻贵阳,迫使蒋介石下令调距离贵阳最近的滇军主力孙渡救驾。当孙渡率滇军赶到贵阳,我红军主力隐蔽集结,只派少数部队向东活动。蒋介石误以为红军兵出湘西与红二、六军团会师,又派孙渡向东追击,待蒋介石从迷魂阵中醒来,红军已摆脱追兵,向云南挺进。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第15集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_15.jpg"],
            "description": "周恩来下令红一、三、五军团及军委纵队和中央纵队西进,力争四月二十四日前进入云南。贺子珍(王亚军饰)生下一个女孩,当毛泽东(唐国强饰)闻讯赶来,孩子已被人抱走了,敌人的侦察机、轰炸机沿路狂轰滥炸。贺子珍(王亚军饰)为掩护伤员负重伤。毛泽东(唐国强饰)巧妙地部署佯攻昆明,致使滇军向昆明集中。我红军主力突然兵分两路,直奔金沙江。为确保北渡金沙江成功,刘伯承(张再新饰)带领干部团乘虚而入,在皎平渡为红军开路。中央红军胜利渡过金沙江。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第16集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_16.jpg"],
            "description": "王家烈引狼入室,被蒋介石借机解除了职务。“云南王”龙云不想让这种事落到自己头上,对蒋介石的收买策略若即若离。红军渡过金沙江,欲攻打会理做短暂休整。周恩来(刘劲饰)尽快组织情报人员破译敌人新密码。会理强攻不下,中共中央在城郊召开了政治局扩大会议,统一了认识,维护了团结。毛泽东(唐国强饰)提出的北上过穿彝族区,越过大渡河与四方面军会合的计划得到批准。为顺利通过语言不通的彝族区,由刘伯承(张再新饰)、聂荣臻(马刚饰)率领先遣队向彝寨走去,红军坚持执行不准开枪的命令,先遣队工兵连被彝人包围后被迫退回原地,不仅被缴械还被扒光了衣服。毛泽东与周恩来、朱德(王伍福饰)接见了先遣队工兵连。先遣队前卫连的肖华向彝民宣传党的民族政策,主张彝汉平等。刘伯承为了红军尽快通过彝族区决定与小叶丹结盟。红军顺利通过彝族区。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第17集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_17.jpg"],
            "description": "蒋介石(陈道明饰)为困扼红军于大渡河,下令重兵把守坚壁清野。红一团利用敌人的矛盾成功地袭占了安顺场,抢占了渡口,十七勇士顺利渡河,打开了一条通路。大渡河水流湍急,河面太宽,不能架桥,渡口也仅有一只小船,红军要全部渡过大渡河大约要二十天时间,而蒋介石的追剿军只要五天就赶到安顺场。根据毛泽东(唐国强饰)的建议,红军只有溯江而上夺取泸定桥。飞夺泸定桥的英雄们创造了世界战争史上的奇迹,近万名红军指战员顺利通过了大渡河。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第18集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_18.jpg"],
            "description": "这口行军锅是红军送给本地人钟伦扬的礼物。红军走后不久,国民党兵挨家挨户搜查,为不让这口锅落入他们手里,钟伦扬背上锅就往屋后的大山跑。国民党兵发现有人往山上跑,举枪就朝钟伦扬打了一枪。只听“当”的一声,子弹打在锅上,钟伦扬应声倒地。幸运的是,子弹穿过锅并没有击中钟伦扬的要害,钟伦扬只是受了点轻伤。后来,钟伦扬把被枪打了个洞的锅背回家,由于没法再用了,他便留起来作纪念。蒋介石(陈道明饰)算定红军一定会步石达开之后,全军覆没在大渡河岸边,如今他气急败坏,大骂属下能。根据洛甫(郑强饰)的建议,由刘伯承(张再新饰)派人护送陈云(杨俊勇饰)出川,去上海恢复中共地下党组织。中央红军从搜集到的敌军情况中分析敌我态势,为尽快实现与红四方面军的会师,利用川军与国民党军的间隙,铤而走险,翻越千年雪山--夹金山。同时,红四方面军总指挥徐向前(李渝勤饰)接到中央红军就要翻越雪山的电文,提议由李先念(高勇饰)率部向夹金山进发,迎接中中央红军。在向夹金山进发的路上,许多战士受到气候影响许多人病倒了。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第19集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_19.jpg"],
            "description": "胡班长等在山上煮辣椒水的时候,遇到敌机轰炸胡为掩护毛泽东(唐国强饰)而牺牲。红军战士们发扬互助互爱的精神,克服了一切困难,终于翻过了夹金山。一四方面军会师于达维镇。李先念(高勇饰)率领所部在懋功欢迎中央红军的到来,并详细禀报了有关的敌情、民情以及四方面军的情况,一致认为在川陕甘建立根据地的计划较好。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第20集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_20.jpg"],
            "description": "两河口会议通过了周恩来(刘劲饰)提出的北上方针和攻打松潘的战役计划,增补张国焘为中革军委副主席,陈昌浩、徐向前为中革军委委员。陈赓听到张国焘(绳中饰)关押曾中生和廖承志的消息很气愤。周恩来担心会师后的大好局面出现逆转。张国焘有意拖延实施松潘战役计划。洛甫(郑强饰)生气地找毛泽东(唐国强饰)、周恩来寻找解决办法。张国焘告诉陈浩昌要后发制人。周恩来(刘劲饰)为救廖承志,策略地对张国焘说:廖承志就交给你了。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第21集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_21.jpg"],
            "description": "沙窝会议拒绝了张国焘(绳中饰)无理要求:宣布了新的红军编制。红军分左、右两路,准备过草地。贺子珍的弟弟因饥饿难忍擅自进寺庙拿了百十来个铜板,违犯了纪律,在长征路上被枪毙。毛泽东(唐国强饰)与洛桑活佛谈经论道,毛泽东告诉他:马克思主义能够救中国。周恩来(刘劲饰)昏迷不醒,睡在木板上。邓颖超三天三夜守候在他的身边。陈赓从几十里外的雪山取来冰块,用局部冷冻的办法为周恩来退烧。毛泽东在过草地前夕把病重的周恩来交给陈赓,让他护送周恩来走出草地。毛泽东为随左路军而去的朱德送行。朱毛暂时分家,军委决定红一军团为过草地的先遣部队。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第22集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_22.jpg"],
            "description": "红军就要过草地啦,洛桑活佛为红军送行。英雄的红军靠着坚定的信念,阶级友爱,团结互助和革命的浪漫主义精神走出了草地。右路军终于过了草地,在毛泽东(唐国强饰)的提议下,徐向前(李渝勤饰)亲临前线与李先念(高勇饰)一道指挥了包座战役,并取得了走出草地后的第一个胜利--包座大捷。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第23集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_23.jpg"],
            "description": "张国焘(绳中饰)重返阿坝。朱德(王伍福饰)与张国焘进行斗争。毛泽东(唐国强饰)令红一军团立即向俄界前进,并争取陈浩昌支持中央北上的方针。张国焘电告陈浩昌、徐向前(李渝勤饰),要他们率右路军再过草地,南下阿坝,与左路军会师,彭德怀(姚居德饰)告诉毛泽东:他闻到了一种味道。就要祸起萧墙,毛泽东(唐国强饰)命令洛甫(郑强饰)、博古(张世汇饰)随彭德怀去三军团。毛泽东(唐国强饰)去前敌找陈浩昌说去三军团开会。毛泽东使出金蝉脱壳之计,指挥红一方面军乘夜色悄然北上。",
            "resourceUrl": ""
        },
        {
            "title": "长征 第24集",
            "image": ["images/video/cz_ds/vid_cz_ds_cov_24.jpg"],
            "description": "中央红军改编为陕甘支队,一举突破天险腊子口。毛泽东(唐国强饰)提出向陕北前进。张国焘(绳中饰)公然宣布成立伪中央,自任主席。朱德(王伍福饰)、刘伯承(张再新饰)为了党的利益,做争取四方面广大指战员的工作。陕甘支队终于到达陕北,毛泽东令彭德怀(姚居德饰)将尾追红军的敌军击溃。红军从瑞金出发,翻山越岭,渡江涉水,走过了两万五千里,打败了敌人,使毛泽东(唐国强饰)及中国共产党人赢得了胜利。长征是战争史上的奇迹。",
            "resourceUrl": ""
        }
    ],
    "videoAlbum": [
        "images/video/cz_ds/vid_cz_ds_1.jpg",
		"images/video/cz_ds/vid_cz_ds_2.jpg",
		"images/video/cz_ds/vid_cz_ds_3.jpg",
		"images/video/cz_ds/vid_cz_ds_4.jpg",
		"images/video/cz_ds/vid_cz_ds_5.jpg",
		"images/video/cz_ds/vid_cz_ds_6.jpg",
		"images/video/cz_ds/vid_cz_ds_7.jpg",
		"images/video/cz_ds/vid_cz_ds_8.jpg",
		"images/video/cz_ds/vid_cz_ds_9.jpg",
		"images/video/cz_ds/vid_cz_ds_10.jpg",
		"images/video/cz_ds/vid_cz_ds_11.jpg",
		"images/video/cz_ds/vid_cz_ds_12.jpg",
		"images/video/cz_ds/vid_cz_ds_13.jpg",
		"images/video/cz_ds/vid_cz_ds_14.jpg",
		"images/video/cz_ds/vid_cz_ds_15.jpg",
		"images/video/cz_ds/vid_cz_ds_16.jpg",
		"images/video/cz_ds/vid_cz_ds_17.jpg",
		"images/video/cz_ds/vid_cz_ds_18.jpg",
		"images/video/cz_ds/vid_cz_ds_19.jpg",
		"images/video/cz_ds/vid_cz_ds_20.jpg",
		"images/video/cz_ds/vid_cz_ds_21.jpg",
		"images/video/cz_ds/vid_cz_ds_22.jpg",
		"images/video/cz_ds/vid_cz_ds_23.jpg",
		"images/video/cz_ds/vid_cz_ds_24.jpg",
		"images/video/cz_ds/vid_cz_ds_25.jpg",
		"images/video/cz_ds/vid_cz_ds_26.jpg"
    ],
	"videoReferences": [
        "https://baike.baidu.com/item/%E9%95%BF%E5%BE%81/6526003?fr=ge_ala",
        "http://tv.cctv.com/2012/12/17/VIDA1355692553012310.shtml",
        "https://movie.douban.com/subject/2156727/reviews?sort=time&start=0",
        "https://movie.douban.com/subject/2156727/reviews?sort=time&start=20",
        "https://www.zhihu.com/question/51336271"
    ]
}

2. 在项目根目录下的models子目录中,创建一个名为video_models.py的文件,如图2所示。在文件中使用Python中类的定义方法,定义一个名为Video的类及相关的属性和方法:在构造方法__init__()中,指定了两个必需的参数video_id、video_name,用于接收影视作品的编号及名称,并将其分别赋值给同名的实例属性,其它的参数以可变的关键字参数接收,并赋值给字典类型的实例属性self.kwargs;在类中还定义两个实例方法get_description()、show_info(),用于测试实例化Video类的对象时,是否能正确的传递参数。具体实现代码如图2所示:图2 创建video_models.py脚本文件

class Video:
    def __init__(self, video_id, video_name, **kwargs):
        """Video类的构造方法,根据提供的影视作品相关信息构造对应的影视作品类实例
                必需的参数:
                    video_id:影视作品的编号,如:"v00100001"
                    video_name:影视作品的名称,如:"长征"
                可选的关键字参数列表:
                    video_type:影视作品的类型,如:ds-电视剧,dy-电影,hj-话剧等
                    video_pic:影视作品的封面图片,如:"images/video/vid_cz_ds.jpg"
                    video_publisher:影视作品的出品方,如:"中国中央电视台"
                    video_detail:影视作品详情的文件名,如:"vid_changzheng_ds.json"
                    video_description:影视作品的简介内容,如:"24集电视剧《长征》,主演:唐国强,..."
                    video_writer:影视作品的编剧,一个人物类对象的列表,如:[...]
                    video_director:影视作品的导演,一个人物类对象的列表,如:[...]
                    video_stars:影视作品的主演,一个人物类对象的列表,如:[...]
                    video_year:影视作品的制作年份,如:"2001",   video_setsNum:影视作品的剧集数,如:24
                    video_origin:影视作品的发行地区,如:"中国大陆",    video_Language:影视作品的语言,如:"普通话"
                    video_catg:影视作品所属的类别,一个多类别名称的列表,如:[...]
                    video_first_play_time:影视作品的首映日期,如:"2001-06-14"
                    video_sets_story:影视作品的剧集列表,如:[...], video_album:影视作品的图集列表,如:[...]
                    video_references:影视作品相关信息的参考源列表,如:[...]
        """
        self.video_id = video_id  # 影视作品编号
        self.video_name = video_name  # 影视作品名称
        self.kwargs = kwargs  # 可能的其它属性

    def get_description(self):  #获取影视作品简介内容的方法
        if self.kwargs and "video_description" in self.kwargs.keys():
            return self.kwargs.get("video_description")

    def show_info(self):    #显示影视作品的相关信息
        print(f"""
            影视作品名称:{self.video_name}
            影视作品出品方:{self.kwargs.get("video_publisher")}
            影视作品的导演:{self.kwargs.get("video_director")}
            影视作品的主演:{self.kwargs.get("video_stars")}
            影视作品的首映时间:{self.kwargs.get("video_first_play_time")}
        """)

3. 在video_models.py文件中,在图2所示代码的基础上,添加相应代码,实例化一个Video类的对象,并测试类中定义的属性及方法,如图3所示:首先在第1行代码处导入了自定义的utils包中的load_data模块下的load_data_from_json_file()方法用于从指定示例文件中加载数据;第4-41行代码对应为图2中内容,此处为了展示的简洁,将这段代码中的文档字符串折叠起来了;在文件的第44-49行处为测试Video类的相关代码。图3 video_models.py中添加的测试Video类的代码

from utils.load_data import load_data_from_json_file


class Video:
    def __init__(self, video_id, video_name, **kwargs):
        """Video类的构造方法,根据提供的影视作品相关信息构造对应的影视作品类实例
                必需的参数:
                    video_id:影视作品的编号,如:"v00100001"
                    video_name:影视作品的名称,如:"长征"
                可选的关键字参数列表:
                    video_type:影视作品的类型,如:ds-电视剧,dy-电影,hj-话剧等
                    video_pic:影视作品的封面图片,如:"images/video/vid_cz_ds.jpg"
                    video_publisher:影视作品的出品方,如:"中国中央电视台"
                    video_detail:影视作品详情的文件名,如:"vid_changzheng_ds.json"
                    video_description:影视作品的简介内容,如:"24集电视剧《长征》,主演:唐国强,..."
                    video_writer:影视作品的编剧,一个人物类对象的列表,如:[...]
                    video_director:影视作品的导演,一个人物类对象的列表,如:[...]
                    video_stars:影视作品的主演,一个人物类对象的列表,如:[...]
                    video_year:影视作品的制作年份,如:"2001",   video_setsNum:影视作品的剧集数,如:24
                    video_origin:影视作品的发行地区,如:"中国大陆",    video_Language:影视作品的语言,如:"普通话"
                    video_catg:影视作品所属的类别,一个多类别名称的列表,如:[...]
                    video_first_play_time:影视作品的首映日期,如:"2001-06-14"
                    video_sets_story:影视作品的剧集列表,如:[...], video_album:影视作品的图集列表,如:[...]
                    video_references:影视作品相关信息的参考源列表,如:[...]
        """
        self.video_id = video_id  # 影视作品编号
        self.video_name = video_name  # 影视作品名称
        self.kwargs = kwargs  # 可能的其它属性

    def get_description(self):  #获取影视作品简介内容的方法
        if self.kwargs and "video_description" in self.kwargs.keys():
            return self.kwargs.get("video_description")

    def show_info(self):    #显示影视作品的相关信息
        print(f"""
            影视作品名称:{self.video_name}
            影视作品出品方:{self.kwargs.get("video_publisher")}
            影视作品的导演:{self.kwargs.get("video_director")}
            影视作品的主演:{self.kwargs.get("video_stars")}
            影视作品的首映时间:{self.kwargs.get("video_first_play_time")}
        """)


if __name__ == "__main__":
    f_path = r"static\jsons\video\vid_changzheng_ds.json"
    data = load_data_from_json_file(f_path)  # 从json文件中加载示例数据
    video = Video(**data[0])  # 用字典解包的方式传递关键字参数创建一个Video类的对象
    video.show_info()
    print(video.get_description())

4. 完成图3所示代码后,运行video_models.py脚本,运行结果的输出如图4所示。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值