设计模式之克隆模式

from copy import copy, deepcopy

# 理解深浅拷贝
# 浅拷贝:只拷贝引用类型对象的指针,不拷贝引用类型对象指向的值(只拷贝第一层)
# 深拷贝:同时拷贝引用类型对象及其指向的值
# 引用类型:Python中表现为:list、dict、、set、类对象

a = [1, 2, 3, 3, 4]
b = a
a[1] = 1000  # [1, 1000, 3, 3, 4]
b  # [1, 1000, 3, 3, 4]

s = set([1, 2, 3, 4])

s1 = s

s.add(20)

print(s1)

class Clone:
    """克隆的基类:
    只要继承该类,就可以进行深浅拷贝
    优点:克隆模式通过内存的拷贝的方式进行复制,比new的方式创建对象性能更好;通过深拷贝的方式,可以方便地创建一个具有相同属性
         和行为的另一个对象,特别是对于复杂对象,方便性尤为突出
    """
    def __init__(self):
        super().__init__()

    def clone(self):
        return copy(self)

    def deepClone(self):
        return deepcopy(self)


class People(Clone):
    def __init__(self, name):
        self._name = name

    def getName(self):
        return self._name

    def setName(self, name):
        self._name = name


will = People("Will")

will2 = will.clone()

will2.setName("Tom")

print(will.getName())
原文地址:https://www.cnblogs.com/loveprogramme/p/12977353.html