当前位置: 首页 > news >正文

湛江网站制作建设烟台企业网站

湛江网站制作建设,烟台企业网站,1 高端品牌网站定制,广州网站制作在线1.工厂模式 (1) 导入所需的模块#xff08; json 和 ElementTree #xff09;。 (2) 定义 JSON数据提取器类#xff08; JSONDataExtractor #xff09;。 (3) 定义 XML数据提取器类#xff08; XMLDataExtractor #xff09;。 (4) 添加工厂函数 dataextraction_factor…1.工厂模式 (1) 导入所需的模块 json 和 ElementTree 。 (2) 定义 JSON数据提取器类 JSONDataExtractor 。 (3) 定义 XML数据提取器类 XMLDataExtractor 。 (4) 添加工厂函数 dataextraction_factory() 以获得正确的数据提取器类。 (5) 添加处理异常的装饰器函数 extract_data_from() 。 (6) 最终添加 main() 函数并使用 Python传统的命令行方式调用该函数。 main 函数的要 点如下。  尝试从 SQL文件data/person.sq3中提取数据以展示异常处理的方式。  从 JSON文件中提取数据并解析出结果。  从 XML文件中提取数据并解析出结果。 测试文件 movies.json [{title:After Dark in Central Park,year:1900, director:null, cast:null, genre:null},{title:Boarding School Girls Pajama Parade,year:1900, director:null, cast:null, genre:null},{title:Buffalo Bills Wild West Parad,year:1900, director:null, cast:null, genre:null},{title:Caught,year:1900, director:null, cast:null, genre:null},{title:Clowns Spinning Hats,year:1900, director:null, cast:null, genre:null}, {title:Capture of Boer Battery by British,year:1900, director:James H. White, cast:null, genre:Short documentary},{title:The Enchanted Drawing,year:1900, director:J. Stuart Blackton, cast:null,genre:null},{title:Family Troubles,year:1900,director:null, cast:null, genre:null},{title:Feeding Sea Lions,year:1900,director:null, cast:Paul Boyton, genre:null}] persons.xml  persons person firstNameJohn/firstName lastNameSmith/lastName age25/age address streetAddress21 2nd Street/streetAddress cityNew York/city stateNY/state postalCode10021/postalCode /address phoneNumbers phoneNumber typehome212 555-1234/phoneNumber phoneNumber typefax646 555-4567/phoneNumber /phoneNumbers gender typemale/type /gender /person person firstNameJimy/firstName lastNameLiar/lastName age19/age address streetAddress18 2nd Street/streetAddress cityNew York/city stateNY/state postalCode10021/postalCode /address phoneNumbers phoneNumber typehome212 555-1234/phoneNumber /phoneNumbers gender typemale/type /gender /person person firstNamePatty/firstName lastNameLiar/lastName age20/age address streetAddress18 2nd Street/streetAddress cityNew York/city stateNY/state postalCode10021/postalCode /address phoneNumbers phoneNumber typehome212 555-1234/phoneNumber phoneNumber typemobile001 452-8819/phoneNumber /phoneNumbers gender typefemale/type /gender /person /persons chapter01/mycode/factory_method.py https://zhuanlan.zhihu.com/p/64487092 python的property是python的一种装饰器是用来修饰方法的。 创建只读属性 property装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用这样可以防止属性被修改 parsed_data 作为属性完整代码 def extract_data_from(filepath):factory_obj Nonetry:factory_obj dataextraction_factory(filepath)except ValueError as e:print(e)return factory_objdef main():# 异常测试sqlite_factoryextract_data_from(../data/person.sq3)print()# Cannot extract data from ../data/person.sq3json_factory extract_data_from(../data/movies.json)json_datajson_factory.parsed_dataprint(ffound:{len(json_data) } movices)for movie in json_data:print(fTitle:{movie[title]})year movie[year]if year:print(fYear: {year})director movie[director]if director:print(fDirector: {director})genre movie[genre]if genre:print(fGenre: {genre})print()xml 解析使用工厂方法处理 XML 文件。Xpath 用于寻找所有姓为 Liar 的person 元素使用 liars xml_data.findall(f.//person[lastNameLiar]) 。对于每一个匹配的人将展示其基本姓名与电话号码信息xml_factory extract_data_from(../data/person.xml)xml_data xml_factory.parsed_dataliarsxml_data.findall(f.//person[lastNameLiar])print(ffound:{len(liars)} persons)for liar in liars:firstname liar.find(firstName).textprint(ffirst name: {firstname})lastname liar.find(lastName).textprint(flast name: {lastname})[print(fphone number ({p.attrib[type]}):, p.text)for p in liar.find(phoneNumbers)]print() if __name__ __main__:main() 虽然 JSONDataExtractor 和 XMLDataExtractor 有相同的接口但是它们处理 parsed_data() 返回值的方式并不一致。每个数据解析器必须与不同的 Python代码相配套。 2.抽象工厂模式 抽象工厂模式是一种一般化的工厂方法模式它提供了相同的好处使跟踪对象创建更 容易将对象的创建与使用解耦并赋予你提升应用内存使用率与性能的可能性。 如何知道该使用工厂方法还是抽象工厂 通常从 简单的工厂方法开始。如果发现应用程序需要许多工厂方法且将这些方法组合起来创建一系列 对象是有意义的那么就使用抽象工厂。 典型的例子是能够在用户使用应用程序时为其更改应用程序的外观例如Apple风格界面、Windows风格界面等而无须终止应用再重新启动。 例子创建一个游戏 希望至少包括两款游戏一款儿童游戏一款成人游戏。我们将根据用户的输入在运行时决定创建和启动哪款游戏。抽象工厂会负责游戏创建的部分。 游戏 FrogWorld FrogWorld 适应抽象工厂 主要任务是创建游戏注解和障碍物 保持创建方 法的独立性及名称的通用性例如 make_character() 和 make_obstacle() 我们将能动 态地更改处于激活状态的工厂进而改变处于激活状态的游戏而不需要修改任何代码。在静 态类型语言中抽象工厂是一个带有空方法的抽象类/接口但是在 Python 中这是不必要的 因为类型是在运行时检查的 j.mp/ginstromdp 。 游戏1 FrogWorld。男主角是一只喜欢吃虫子的青蛙。每个 主角都需要一个好的名字在我们的例子中这个名字是由用户在运行时给出的。 interact_ with() 方法用于描述青蛙与障碍物例如虫子、谜题和其他青蛙的交互。 游戏 FrogWorld FrogWorld 适应额抽象工厂 主要任务是创建游戏注解和障碍物 保持创建方 法的独立性及名称的通用性例如 make_character() 和 make_obstacle() 我们将能动 态地更改处于激活状态的工厂进而改变处于激活状态的游戏而不需要修改任何代码。在静 态类型语言中抽象工厂是一个带有空方法的抽象类/接口但是在 Python 中这是不必要的 因为类型是在运行时检查的 j.mp/ginstromdp 。 class Frog:def __init__(self, name):self.name namedef __str__(self):return self.namedef interact_with(self, obstacle):act obstacle.action()msg f{self} the Frog encounters {obstacle} and {act}!print(msg)# 虫子 class Bug:def __init__(self):passdef __str__(self):return a bugdef action(self):return eats it class FrogWorld:def __init__(self, name):print(self)self.player_name namedef __str__(self):return \n\n\t------ Frog World -------def make_character(self):return Frog(self.player_name)def make_obstacle(self):return Bug() 游戏2 名为 WizardWorld 的游戏也是类似的。唯一的区别是巫师与怪物如 orks 兽人战斗 而不是吃虫子。 FrogWorld 游戏定义Frog 和Bug类 1 为FrogWorld 游戏定义Frog 和Bug 类 2添加FrogWold 类在其中使用Frog 和Bug 类 3为WizardWold 游戏定义wizrd 和Ork 类 4 添加WizardWold 类在其中使用Wizard 类和Ork 类 5 定义GameEnviroment类 6添加validate_age() 函数 7 使用main()函数  获取用户输入的姓名和年龄 根据用户的 年龄决定使用的游戏 实例化正确的游戏类然后实例化GameEnviroment类 调用enviroment对象的play() 方法 玩游戏 完整代码 chapter01/mycode/abstract_factory.py 游戏 FrogWorld FrogWorld 适应额抽象工厂 主要任务是创建游戏注解和障碍物 保持创建方 法的独立性及名称的通用性例如 make_character() 和 make_obstacle() 我们将能动 态地更改处于激活状态的工厂进而改变处于激活状态的游戏而不需要修改任何代码。在静 态类型语言中抽象工厂是一个带有空方法的抽象类/接口但是在 Python 中这是不必要的 因为类型是在运行时检查的 j.mp/ginstromdp 。 class Frog:def __init__(self, name):self.name namedef __str__(self):return self.namedef interact_with(self, obstacle):act obstacle.action()msg f{self} the Frog encounters {obstacle} and {act}!print(msg)# 虫子 class Bug:def __init__(self):passdef __str__(self):return a bugdef action(self):return eats it class FrogWorld:def __init__(self, name):print(self)self.player_name namedef __str__(self):return \n\n\t------ Frog World -------def make_character(self):return Frog(self.player_name)def make_obstacle(self):return Bug()# 巫师 class Wizard:def __init__(self, name):self.name namedef __str__(self):return self.namedef interact_with(self, obstacle):act obstacle.action()msg f{self} the Wizard battles against {obstacle}and {act}!print(msg)# 怪物 class Ork:def __str__(self):return an evil orkdef action(self):return kills itclass WizardWorld:def __init__(self, name):print(self)self.player_name namedef __str__(self):return \n\n\t------ Wizard World -------def make_character(self):return Wizard(self.player_name)def make_obstacle(self):return Ork() GameEnvironment 类是我们游戏的主入口。它接受一个工厂作为输入并使用它来创建游 戏世界。 play() 方法初始化主角与障碍物之间的交互# 游戏的入口 接收一个工厂作为输入并且使用它创建游戏世界 paly() 方法初始化主角与障碍物之间的交互 class GameEnvironment:def __init__(self, facotry):self.hero facotry.make_character()self.abstacle facotry.make_obstacle()def play(self):self.hero.interact_with(self.abstacle)def validate_age(name):try:age input(fWelcome {name}. How old are you? )age int(age)except ValueError as err:print(fAge {age} is invalid, please try again...)return (False, age)return (True, age)def main():name input(Hello,whats your name?)valid_input Falsewhile not valid_input:valid_input, age validate_age(name)game FrogWorld if age 18 else WizardWorldenvironment GameEnvironment(game(name))environment.play()if __name__ __main__:main()运行结果  Hello,whats your name? aa Welcome aa. How old are you? 12------ Frog World -------aa the Frog encounters a bug and eats it ! Hello,whats your name?bb Welcome bb. How old are you? 19------ Wizard World ------- bb the Wizard battles against an evil orkand kills it!Process finished with exit code 0
http://www.hkea.cn/news/14418894/

相关文章:

  • 网站建设大学机械类网站如何做网站优化
  • 建设一个手机网站首页营销平台
  • 深圳网站有哪些内容怎么做代理ip网站
  • 营销加盟网站建设房产智能建站系统
  • 适合做浏览器主页的网站模板网站代理
  • 设计素材网站哪个好用易货小程序开发教程
  • 常德做网站多少钱wordpress file upload
  • 建设网站有哪些方法wordpress会员图片主题
  • 做外贸的网站域名怎么买wordpress登录密码忘
  • 石狮住房和城乡建设局网站集团网站制作
  • 郑州网站推广价网站建设要会英语吗
  • 北太平庄网站建设南京网站制作公司报价
  • 网站文章怎么做才能被收录做网站 提交源码 论坛
  • 如何用腾讯云主机做网站男男做的视频网站
  • asp网站建设教育培训网站大全
  • 目前比较流行的公司网站建站技术wordpress 下载类型
  • 网站固定通栏代码深圳做网站最好的公司
  • 西安做企业网站排名长沙网络推广
  • 做房产中介网站联通官网
  • 网站建设需求什么功能有哪些网站可以做图片打赏
  • 自己如何网站建设大学生dw网页设计作业
  • 商城网站建设最新报价土特产 网站源码
  • wordpress翻译更新失败企业网站优化方案
  • 购物网站的设计思路网页设计师证书考什么内容
  • 苏州高端网站设计机构怎样做阿里巴巴网站
  • 湛江建站免费模板润滑油网站怎样做效果更好
  • 家纺公司网站模版网站开发中的网页上传和网站发布
  • 通信管理局网站备案网站开发行业前景
  • 上海专业做网站电话阿里巴巴alexa排名
  • 60天做网站施工企业安全生产评价标准jgjt77破解版