python设计模式之原型模式

python设计模式之原型模式

​ 对于原型模式而言,其中最主要的部分就是关于一个对象的复制,其中就包含两个方面:1、浅复制;2、深复制。具体的区别请看我相关的随笔。这里简略的说明一下,浅复制就等于对象的引用,也就是b = object()这种,对于b的修改会影响到相关的对象;而深复制就相当于两个完全独立的东西,互不影响。

​ 所以说,原型模式就是帮助我们创建对象的克隆,方便对象的分享和使用。在python中,通过使用copy.deepcopy()函数来完成。

​ 代码实例如下:

import copy
class A:
	def __init__(self):
		self.x = 18
		self.msg = 'Hello'
class B(A):
	def __init__(self):
		A.__init__(self)
		self.y = 34
	def __str__(self):
		return '{}, {}, {}'.format(self.x, self.msg, self.y)
if __name__ == '__main__':
	b = B()
	c = copy.deepcopy(b)
	print([str(i) for i in (b, c)])
	print([i for i in (b, c)])

结果如下

>>> python3 clone.py
['18, Hello, 34', '18, Hello, 34']
[<__main__.B object at 0x7f92dac33240>, <__main__.B object at 0x7f92dac33208>]

​ 输出表明通过copy.deepcopy()得到两个独立的副本。

​ 最后,可以使用copy.copy()函数进行浅复制。

​ 以下为官方文档的解释:

  • 浅复制构造了一个新的复合对象后,(会尽可能地)将在原始对象中找到的对象的引用插入到对对象中
  • 深复制构造一个新的复合对象后,会递归的将在原始对象中找到的对象的副本插入到新对象中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jonny Jiang-zh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值