python 单例模式

实现代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import threading

class Singleton(object):
    _lock = threading.Lock()
    def __init__(self, a, b):
        pass

    def __new__(cls, *args, **kwargs):
        if not hasattr(Singleton, "_instance"):
            with Singleton._lock:
                if not hasattr(Singleton, "_instance"):
                    Singleton._instance = object.__new__(cls)
                    Singleton.client = hello(args[0], args[1])
        return Singleton._instance


def hello(a, b):
    print 'ok', a, b
    return 'hello'

if __name__ == '__main__':
    a = Singleton('a', 'b')
    b = Singleton('c', 'd')
    c = Singleton('e', 'f')
    print a.client
    print b.client
    print c.client

运行效果: 

参考链接:

https://www.cnblogs.com/tqsummer/archive/2011/01/24/1943315.html

https://www.cnblogs.com/huchong/p/8244279.html

原文地址:https://www.cnblogs.com/yuanzhenliu/p/9158097.html