最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

python如何实现单例模式

来源:动视网 责编:小采 时间:2020-11-02 22:16:10
文档

python如何实现单例模式

python如何实现单例模式:python如何实现单例模式?下面给大家带来七种不同的方法:一:staticmethod代码如下:class Singleton(object): instance = None def __init__(self): raise SyntaxError('can not instance, please use ge
推荐度:
导读python如何实现单例模式:python如何实现单例模式?下面给大家带来七种不同的方法:一:staticmethod代码如下:class Singleton(object): instance = None def __init__(self): raise SyntaxError('can not instance, please use ge


python如何实现单例模式?下面给大家带来七种不同的方法:

一:staticmethod

代码如下:

class Singleton(object):
 instance = None
 def __init__(self):
 raise SyntaxError('can not instance, please use get_instance')
 def get_instance():
 if Singleton.instance is None:
 Singleton.instance = object.__new__(Singleton)
 return Singleton.instance
a = Singleton.get_instance()
b = Singleton.get_instance()
print('a id=', id(a))
print('b id=', id(b))

该方法的要点是在__init__抛出异常,禁止通过类来实例化,只能通过静态get_instance函数来获取实例;因为不能通过类来实例化,所以静态get_instance函数中可以通过父类object.__new__来实例化。

二:classmethod

和方法一类似,代码:

class Singleton(object):
 instance = None
 def __init__(self):
 raise SyntaxError('can not instance, please use get_instance')
 def get_instance(cls):
 if Singleton.instance is None:
 Singleton.instance = object.__new__(Singleton)
 return Singleton.instance
a = Singleton.get_instance()
b = Singleton.get_instance()
print('a id=', id(a))
print('b id=', id(b))

该方法的要点是在__init__抛出异常,禁止通过类来实例化,只能通过静态get_instance函数来获取实例;因为不能通过类来实例化,所以静态get_instance函数中可以通过父类object.__new__来实例化。

三:类属性方法

和方法一类似, 代码:

class Singleton(object):
 instance = None
 def __init__(self):
 raise SyntaxError('can not instance, please use get_instance')
 def get_instance():
 if Singleton.instance is None:
 Singleton.instance = object.__new__(Singleton)
 return Singleton.instance
a = Singleton.get_instance()
b = Singleton.get_instance()
print(id(a))
print(id(b))

该方法的要点是在__init__抛出异常,禁止通过类来实例化,只能通过静态get_instance函数来获取实例;因为不能通过类来实例化,所以静态get_instance函数中可以通过父类object.__new__来实例化。

四:__new__

常见的方法, 代码如下:

class Singleton(object):
 instance = None
 def __new__(cls, *args, **kw):
 if not cls.instance:
 # cls.instance = object.__new__(cls, *args)
 cls.instance = super(Singleton, cls).__new__(cls, *args, **kw)
 return cls.instance
a = Singleton()
b = Singleton()
print(id(a))
print(id(b))

文档

python如何实现单例模式

python如何实现单例模式:python如何实现单例模式?下面给大家带来七种不同的方法:一:staticmethod代码如下:class Singleton(object): instance = None def __init__(self): raise SyntaxError('can not instance, please use ge
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top