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

张小明 2026/1/2 5:05:05
长春网长春网络推广站排名,做名片用哪个网站,全国前十名小程序开发公司,微信小程序开发用什么语言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进行投诉反馈,一经查实,立即删除!

网站的风格与布局设计做网站怎么宣传运营

CompressO视频压缩神器:一键瘦身95%,释放你的存储空间!🎯 【免费下载链接】compressO Convert any video into a tiny size. 项目地址: https://gitcode.com/gh_mirrors/co/compressO 还在为手机空间不足而烦恼吗&#xff…

张小明 2025/12/31 11:54:10 网站建设

平顶山网站建设服务公司开发公司赠送阁楼视同销售

UI-TARS-7B:开启图形界面智能交互的终极解决方案 【免费下载链接】UI-TARS-7B-SFT 项目地址: https://ai.gitcode.com/hf_mirrors/ByteDance-Seed/UI-TARS-7B-SFT 在当今数字化时代,图形界面交互已成为我们日常工作和生活中不可或缺的一部分。UI…

张小明 2025/12/31 12:18:25 网站建设

网站建设基本流程费用校园网的规划与设计

ubuntu系统无hdmi输入,可使用usb作为输入,通过笔记本复制屏幕,然后通过USB HDMI视频采集卡连接ubuntu系统,以达到笔记本输入到ubuntu。列出系统中所有可用的视频设备(比如摄像头、采集卡等)v4l2-ctl --list…

张小明 2026/1/1 14:18:38 网站建设

用家用路由器ip做网站网易云服务器

Linux系统74HC595驱动程序解析(基于设备树配置的多设备) 1. 驱动概述 本驱动程序是基于Linux内核的74HC595串行移位寄存器驱动,支持通过设备树进行配置,提供了字符设备接口和sysfs接口,方便用户空间程序控制74HC595芯片。 驱动特点&#xff1…

张小明 2026/1/1 19:18:35 网站建设

张扬网站建设做app和做网站

毕业季的战鼓擂动,论文这座“大山”横亘在每位学子面前。从开题时的迷茫探索,到文献综述的浩如烟海,再到初稿创作的绞尽脑汁,最后查重的提心吊胆,每一步都似在迷雾中摸索前行。而在这个AI技术风起云涌的时代&#xff0…

张小明 2025/12/31 15:01:11 网站建设

做网站的价格表安康教育平台

在深夜的实验室里,李博士凝视着屏幕上的数据海洋——三年的实验积累了超过200GB的复杂基因组数据,传统的统计工具已无法处理这些信息间的非线性关联。这是无数研究者的共同困境:我们生活在一个数据富饶的时代,却被困在信息匮乏的孤…

张小明 2025/12/31 15:46:27 网站建设