python 设计模式 原型模式_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>, <__main__.b object at>]

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

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

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

[ ] 浅复制构造了一个新的复合对象后,(会尽可能地)将在原始对象中找到的对象的引用插入到对对象中

[ ] 深复制构造一个新的复合对象后,会递归的将在原始对象中找到的对象的副本插入到新对象中

你可能感兴趣的:(python,设计模式,原型模式)