python实现单例模式__init__ __new__区别

来源:互联网 发布:2016淘宝彩票是真的吗 编辑:程序博客网 时间:2024/06/07 12:57
1.如果在类中同时定义了__init__和__new__,在创建对象的时候会有优先使用__new__
2.new方法会返回所构造的对象,init则不会,在使用new返回对象的时候会隐式调用init函数。new函数必须以cls作为第一个参数,而init则以self作为其第一个参数
3.利用new创建一个类的对象的最常用的方法为:super(currentclass, cls).__new__(cls[, ...]) 
class Singleton(object):    def __new__(cls, *args, **kwargs):        if not hasattr(cls, '_instance'):            cls._instance = super(Singleton, cls).__new__(cls, *args, **kwargs)        return cls._instance
0 0
原创粉丝点击