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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值