长春网长春网络推广站排名做名片用哪个网站

张小明 2026/1/9 6:45:26
长春网长春网络推广站排名,做名片用哪个网站,全国前十名小程序开发公司,微信小程序开发用什么语言Python 中的原型模式#xff08;Prototype Pattern#xff09; 原型模式是一种创建型设计模式#xff0c;其核心思想是#xff1a; 用一个已存在的对象#xff08;原型#xff09;作为模板#xff0c;通过复制#xff08;克隆#xff09;来创建新的对象#xff0c;而…Python 中的原型模式Prototype Pattern原型模式是一种创建型设计模式其核心思想是用一个已存在的对象原型作为模板通过复制克隆来创建新的对象而不是通过new或构造函数重新创建。适用场景创建对象代价高昂需要大量初始化、IO、网络请求等对象结构复杂但大部分属性相似只需微调希望避免显式构造函数参数爆炸需要快速生成大量相似对象如游戏中的怪物、UI 组件、报表模板等原型模式的优点隐藏创建细节客户端只需调用clone()性能好复制比重新构建快得多方便扩展只需克隆再修改Python 中的实现方式Python 提供了非常方便的内置支持copy模块中的copy()浅拷贝和deepcopy()深拷贝以及__copy__、__deepcopy__钩子。1. 最简单的原型模式使用copy.deepcopy()importcopyclassPrototype:def__init__(self,name,age,skills):self.namename self.ageage self.skillsskills# 列表深拷贝时会复制defclone(self):returncopy.deepcopy(self)def__str__(self):returnf{self.name}({self.age}), skills:{self.skills}# 使用if__name____main__:originalPrototype(Alice,28,[Python,Java,SQL])clone1original.clone()clone1.nameBobclone1.age30clone1.skills.append(Go)clone2original.clone()clone2.nameCharlieprint(Original:,original)print(Clone1: ,clone1)print(Clone2: ,clone2)输出Original: Alice (28), skills: [Python, Java, SQL] Clone1: Bob (30), skills: [Python, Java, SQL, Go] Clone2: Charlie (28), skills: [Python, Java, SQL]2. 更优雅的方式自定义__copy__和__deepcopy__importcopyclassEmployee:def__init__(self,name,department,projects):self.namename self.departmentdepartment self.projectsprojects# 列表def__copy__(self):# 浅拷贝只复制对象本身列表引用共享newself.__class__.__new__(self.__class__)new.__dict__.update(self.__dict__)returnnewdef__deepcopy__(self,memoNone):# 深拷贝递归复制所有可变对象newself.__class__.__new__(self.__class__)new.__dict__.update({name:self.name,department:self.department,projects:copy.deepcopy(self.projects,memo)})returnnewdefclone(self,deepFalse):returncopy.deepcopy(self)ifdeepelsecopy.copy(self)def__str__(self):returnf{self.name}in{self.department}, projects:{self.projects}# 测试empEmployee(Alice,Engineering,[Project A,Project B])# 浅拷贝emp_shallowemp.clone(deepFalse)emp_shallow.nameBobemp_shallow.projects.append(Project C)print(Original:,emp)print(Shallow clone:,emp_shallow)# projects 列表是共享的# 深拷贝emp_deepemp.clone(deepTrue)emp_deep.nameCharlieemp_deep.projects.append(Project D)print(Original (unchanged):,emp)print(Deep clone:,emp_deep)输出Original: Alice in Engineering, projects: [Project A, Project B, Project C] Shallow clone: Bob in Engineering, projects: [Project A, Project B, Project C] Original (unchanged): Alice in Engineering, projects: [Project A, Project B, Project C] Deep clone: Charlie in Engineering, projects: [Project A, Project B, Project D]3. 原型管理器Prototype Registry—— 注册原型并按名称克隆importcopyclassPrototypeRegistry:def__init__(self):self._prototypes{}defregister(self,name,prototype):self._prototypes[name]prototypedefunregister(self,name):delself._prototypes[name]defclone(self,name,**attrs):prototypeself._prototypes[name]clonecopy.deepcopy(prototype)clone.__dict__.update(attrs)# 覆盖或添加属性returnclone# 使用if__name____main__:registryPrototypeRegistry()# 注册几种模板registry.register(basic_car,Car(Basic Car,Sedan,Red,100000))registry.register(sports_car,Car(Sports Car,Coupe,Black,300000))# 克隆并修改car1registry.clone(basic_car,colorBlue,price120000)car2registry.clone(sports_car,nameFerrari,colorYellow,price500000)print(car1)print(car2)原型模式 vs 其他创建型模式对比模式适用场景是否需要构造函数工厂方法根据类型创建不同对象是抽象工厂创建一组相关对象是建造者复杂对象一步步构建否链式原型复制已有对象尤其是初始化代价高否直接 clonePython 中的实际推荐大多数情况下直接用copy.deepcopy()就够了。需要控制浅/深拷贝行为时自定义__copy__和__deepcopy__。需要管理多种模板时使用原型注册器Registry。真实项目中的例子游戏开发克隆怪物、技能、物品报表系统克隆报表模板再修改标题、字段图形编辑器复制图形对象机器学习复制模型配置再微调如果你想看更复杂的例子如游戏角色原型、图形对象克隆、结合其他模式的实现随时告诉我
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

扬中网站建设价格linux主机上传网站

LangFlow结合RAG架构的可视化实现方法 在构建智能问答系统时,一个常见的挑战是:如何让大语言模型(LLM)在面对企业私有知识库时依然“言之有据”,而不是凭空编造答案。尽管现代LLM具备强大的语言生成能力,但…

张小明 2026/1/4 13:59:22 网站建设

查看网站模板seo优化排名推广

一、为什么选择网络安全? 这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护 2.0》等一系列政策/法规/标准的持续落地,网络安全行业地位、薪资随之水涨船高。 未来 3-5 年,是安全行业的黄金发展期,提前踏…

张小明 2026/1/9 1:45:28 网站建设

思途做的旅游网站金华网站设计公司

Kotaemon 可用于快递包裹轨迹智能查询系统在物流行业数字化转型的浪潮中,如何高效、准确地追踪海量快递包裹的流转状态,已成为提升用户体验与运营效率的关键挑战。传统查询方式依赖人工输入单号、逐级调用不同快递公司的接口,过程繁琐且信息分…

张小明 2026/1/5 17:08:48 网站建设

建设网站和app达浒镇网站建设公司

从零搭建 ELK 日志分析系统:新手也能轻松上手的实战指南你有没有遇到过这样的场景?线上服务突然报错,几十台服务器的日志散落在各处,运维团队只能一台台登录、grep关键词,耗时半小时才定位到问题源头。等修复完&#x…

张小明 2026/1/3 3:57:52 网站建设

哪些行业网站推广做的多一级a做爰片就在线看网站

网络安全防护:psad与fwsnort的应用 1. psad的主动响应机制 1.1 端口扫描监测与规则添加 psad会对网络中的端口扫描行为进行监测,并根据监测到的情况添加 iptables 阻塞规则。例如,当监测到来自 144.202.X.X 的扫描,在扫描间隔内监测到 66 个 UDP 数据包后,psad 会添加针…

张小明 2026/1/3 3:57:50 网站建设

免费图表制作网站如何做单位网站

深入解析微软Azure数据存储:关系数据库的全面指南 1. 微软Azure数据存储解决方案概述 微软Azure为云服务开发者提供了多种数据存储解决方案,开发者可根据项目需求和限制选择使用,也可组合多种方案以满足存储需求。主要的存储解决方案包括: - 在虚拟机上运行SQL Server …

张小明 2026/1/3 3:57:48 网站建设