首页 > 编程语言 > 详细

Python 实现单例模式

时间:2017-09-20 23:05:35      阅读:323      评论:0      收藏:0      [点我收藏+]

    Python 实现单例模式

    

# 使用Python实现单例模式

# 方法一: 使用__new__方法
class SingleTon(object):
    def __new__(cls, *args, **kwargs):
        if not hasattr(cls, ‘_instance‘):
            cls._instance = object.__new__(cls, *args, **kwargs)
        return cls._instance


class TestClass(SingleTon):
    a = 1


# 方法二: 使用装饰器(decorator)
def SingleTon1(cls, *args, **kwargs):
    instances = {}
    def _singleTon():
        if cls not in instances:
            instances[cls] = cls(*args, **kwargs)
        return  instances[cls]
    return _singleTon


@SingleTon1
class TestClass1(object):
    a = 1



# 共享属性  属性是共享的,但是并非单例模式
class SingleTon3(object):
    _state = {}
    def __new__(cls, *args, **kwargs):
        obj = object.__new__(cls, *args, **kwargs)
        obj.__dict__ = cls._state
        return obj


class TestClass3(SingleTon3):
    a = 1

test1 = TestClass3()
test2 = TestClass3()
test1.a = 2
print(test1.a)
print(test2.a)
print(test1)
print(test2)


本文出自 “许大树” 博客,请务必保留此出处http://abelxu.blog.51cto.com/9909959/1967293

Python 实现单例模式

原文:http://abelxu.blog.51cto.com/9909959/1967293

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!