手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Python 实现单例模式

[日期:2017-10-12] 来源:Linux社区  作者:abelxu [字体: ]

# 使用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://www.linuxidc.com/Linux/2017-10/147481.htm

linux
相关资讯       单例模式  Python 实现单例模式 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款