Python设计模式创建型原型模式
作者:范桂飓 发布时间:2023-07-21 21:19:25
标签:Python,设计模式,原型模式
一、原型模式
原型是相对于复制、克隆而言的,但是不同于模板,模板创造出的东西是一模一样,而原型创造出的东西是允许存在差异化和个性化的。
原型模式的实现思路是:“深拷贝” 和 “属性更新”。定义一个原型,设计一个拷贝接口,不需要频繁实例化类,只需要拷贝。
优点:
减少因为对象实例化而产生的损耗,并实行动态装载。
二、应用场景
三、代码示例
要实现多个人的自我介绍,一般方法是每个人都创建一个对象,但是使用原型模式之后,只需要实例化一个对象(标准人),后面的人都已这个标准人为基础来实现个性化。
import copy
class Information:
"""个人信息"""
def __init__(self):
self.name = None
self.ager = None
self.height = None
def run(self):
"""
自我介绍方法
:return:
"""
print("我叫{}: 年龄:{} 身高:{}".format(self.name, self.ager, self.height))
class Prototype:
def __init__(self, obj):
self.copy_object = obj()
def clone(self, **attr):
obj = copy.deepcopy(self.copy_object)
obj.__dict__.update(attr)
return obj
if __name__ == '__main__':
test = Prototype(Information)
a = test.clone(name='张山', ager="30", height='170cm')
a.run()
b = test.clone(name='李飞', ager="20", height='190cm')
b.run()
来源:https://is-cloud.blog.csdn.net/article/details/122934315


猜你喜欢
- SQL Server 2008我们也能从中体验到很多新的特性,但是对于SQL Server 2008安装,还是用图来说话比较好。本文将从SQ
- 如下所示:#求一个数的最大约数(不算本身)def getmaxnum(n): num = n //2 while n
- 如题:在python的函数调用中需要记录时间,下面是记录毫秒时间的方法。import datetimeimport timet1 = dat
- 从官网下载mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz创建mysql用户[root@Master ho
- 在Python中可以存储很大的值,如下面的Python示例程序:x = 1000000000000000000000000000000000
- 循环加载模块假设你有两个文件,a.py和b.py,在这两个文件中互相加载对方,例如:在a.py中:import bdef f():retur
- 实验室导师又有任务,从一个.dat文件中读取波形数据,通过一个自编码网络进行异常检测。可是对我这种小白来说真的艰难。从最基础的文件读写开始吧
- 这篇文章我们来讲讲如何在python使用bs4模块返回值中正确使用find和find_all来取值。我们先来看看find函数在两种场景使用:
- 一、如何新建独立帐号并设置权限这里我使用Navicat作为我的数据库管理工具,打开Navicat。选择“用户”--“新建用户”输入用户名、主
- PyQt5安装 在cmd下输入pip install PyQt5 完成PyQt5安装,安装完成后,在python安装目录下可以看到配置PyC
- 上文中,我们一起学习了手把手教你实现一个 Python 计时器。本文中,云朵君将和大家一起了解什么是上下文管理器 和 Python
- 前言在制作论文插图时,有时要求将图片的局部放大来展示细节内容,同时将放大图拼接在原图上以方便观察对比。当然直接利用电脑自带的画图软件或者别的
- 我在网上找到了一篇文章,简直堪称神器。刚开始用brew search mysql ...能找到,按照提示一步一步安装,结果到最后就是启动不起
- SET @SQL = 'SELECT * FROM Comment with(nolock) WHERE 1=1 &nbs
- 有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。本章节我们将为大家介绍如
- CSS文件的链接方式·附加链接:外部CSS文件·导入CSS:常用应用多个CSS文件时,将多个CSS导入一个CSS文件中CSS规则定义有三种:
- 做一个将本地图片上传到mysql数据库的小实例,顺便也下载下来到桌面检测是否上传成功。在写代码之前得先在数据库中建立image表,用来存储图
- 目录一、前端控制1、在router.js文件(把静态路由和动态路由分别写在router.js)2、store/permission.js(在
- 安装request库以火车的站站查询为例的post和get方法的接口测试使用pytest测试接口1、requests的请求机制1、安装req
- 前言Flask是一个使用python编写的轻量级Web框架,对比其他相同类型的框架而言,这个框架更加的灵活轻便。并且具有很强的定制性,用户可