单例模式
1.设置全局变量使得类的对象可以被访问,但是还不能防止被多次实例化
2.让类自身保存唯一的实例,保证只能被实例化一次
饿汉式:类被加载时就将自己实例化,优点是避免多线程访问的安全性,缺点是提前占用系统资源
懒汉式:类在第一次被引用时才将自己实例化,避免了提前占用系统资源,但是有多线程访问安全性问题
代码示例1:
class Singleton(object):
def __new__(cls, *args, **kwargs):
if not hasattr(cls, '_inst'):
cls._inst = super(Singleton, cls).__new__(cls, *args, **kwargs)
return cls._inst
class A(Singleton):
def __init__(self, name):
self._name = name
if __name__ == '__main__':
a = A('apple')
b = A('banana')
print a._name, id(a), a
print b._name, id(b), b
print a is b
其他方法有基类元祖__metaclass__法,自定义模块module法,装饰器法等等。