码迷,mamicode.com
首页 > 编程语言 > 详细

python 单例模式

时间:2018-02-13 23:35:34      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:单例模式   单例   方法   直接   模式   实例   super   int   +=   

直接上代码:

class Singleton(object):
    def __new__(self):
        if not hasattr(self, instance):
            self.instance = super(Singleton, self).__new__(self)
        self.num = 1
        return self.instance
    
    def add(self):
        self.num += 1
        
    def hello(self):
        print(self.num)

s1 = Singleton()
s1.add()
s1.hello()
2
s2 = Singleton()
s2.hello()
2

 这是《Python设计模式》第13页经过完善后的例子。
特别说明:
1、有网友说__new__是在__init__之前调用的实例化方法,参数必须使用cls,而不能使用self,经过试验,却可以使用self;
2、如果在__init__中初始化属性num,则不能实现单例模式,每次创建对象都会初始化num;

python 单例模式

标签:单例模式   单例   方法   直接   模式   实例   super   int   +=   

原文地址:https://www.cnblogs.com/swingingmace/p/8447585.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!