wordpress站点logo东营网站优化

张小明 2026/1/12 12:40:44
wordpress站点logo,东营网站优化,做旅游去哪个网站找图,discuz自适应模板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进行投诉反馈,一经查实,立即删除!

利用阿里云虚拟主机做网站南宁seo服务优化

如何科学选型LED显示屏:尺寸、像素密度与观看距离的黄金三角在数字视觉时代,一块好的LED显示屏不只是“亮起来”那么简单。无论是企业会议室里那面用于汇报的巨幕,还是城市广场上几十米高的广告墙,背后都藏着一套精密的设计逻辑。…

张小明 2026/1/10 18:37:27 网站建设

绍兴网站建设08keji高端网站的特点

PaddleOCR模型加载失败全方位排查指南 【免费下载链接】PaddleOCR 飞桨多语言OCR工具包(实用超轻量OCR系统,支持80种语言识别,提供数据标注与合成工具,支持服务器、移动端、嵌入式及IoT设备端的训练与部署) Awesome mu…

张小明 2026/1/11 5:37:56 网站建设

安徽淮北做网站的公司品牌网站首页设计

电影票销售管理 目录 基于springboot vue电影票销售管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue电影票销售管理系统 一、前言 博主介绍…

张小明 2026/1/9 23:05:14 网站建设

创世网站全球华设计

视频理解与生成技术:从时序分析到动态内容合成 视频作为一种包含丰富时空信息的多媒体格式,相比静态图像增加了时间维度的复杂性,为计算机视觉研究带来了新的挑战与机遇。视频理解与生成技术旨在使机器能够解析视频中的动态内容并创造逼真的时序视觉数据,成为智能监控、自…

张小明 2026/1/11 11:38:19 网站建设

合肥做网站哪家好河北建设工程造价信息网站

第一章:C26契约编程概述 C26引入的契约编程(Contract Programming)机制旨在提升代码的可靠性与可维护性,通过在程序中显式声明前提条件、后置条件和断言,使编译器和运行时系统能够检测违反契约的行为。这一特性允许开发…

张小明 2026/1/10 4:28:43 网站建设

良品铺子网站规划和建设能不能上传网站再备案

Android投屏终极指南:QtScrcpy跨平台控制技术完整解析 【免费下载链接】QtScrcpy QtScrcpy 可以通过 USB / 网络连接Android设备,并进行显示和控制。无需root权限。 项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy 在移动办公和娱乐…

张小明 2026/1/10 3:15:00 网站建设