class Singleton(type):
def __call__(cls, *args, **kwargs):
if not hasattr(cls, '_instance'):
cls._instance = super(Singleton, cls).__call__(*args, **kwargs)
return cls._instance
# Python2
class Foo(object):
__metaclass__ = Singleton
# Python3
class Foo(metaclass=Singleton):
pass
foo1 = Foo()
foo2 = Foo()
print(foo1 is foo2) # True
浅拷贝和深拷贝的关系区别:
它们都是拷贝只是不同层次的拷贝而已。
1.对于一维列表,当列表中的元素发生改变,copy和deepcopy都不会随着原列表的元素改变而发生任何改变。
2.对于二维列表,copy只拷贝最外层,当一个列表的二维列表中的元素发生改变,则另外一个列表也会随着发生改变;deepcopy内外层全部拷贝,当一个列表的二维列表中的元素发生改变,另一个列表不发生任何改变。