赶紧入手,python面试题之Python如何实现单例模式?

 

你现在在找工作吗?还是在观望中呢?快过年了,很多人都会想先存点钱,把年过好再说吧。为了春节,我们加油!哈哈。

回到找工作的话题,遇到心仪的公司了,不可否定的是:最后还是得过了面试那一关。所以,面试前把准备做足了,这样才能增加面试成功的几率。

赶紧入手,python面试题之Python如何实现单例模式?

 

废话不多说,python面试题之Python如何实现单例模式,直接给大家送上干货:

#使用__metaclass__(元类)的高级python用法 
class Singleton2(type): 
 def __init__(cls, name, bases, dict): 
 super(Singleton2, cls).__init__(name, bases, dict) 
 cls._instance = None 
 def __call__(cls, *args, **kw): 
 if cls._instance is None: 
 cls._instance = super(Singleton2, cls).__call__(*args, **kw) 
 return cls._instance 
 
class MyClass3(object): 
 __metaclass__ = Singleton2 
 
one = MyClass3() 
two = MyClass3() 
 
two.a = 3 
print one.a 
#3 
print id(one) 
#31495472 
print id(two) 
#31495472 
print one == two 
#True 
print one is two
	#True
	
	#使用装饰器(decorator), 
#这是一种更pythonic,更elegant的方法, 
#单例类本身根本不知道自己是单例的,因为他本身(自己的代码)并不是单例的 
def singleton(cls, *args, **kw): 
 instances = {} 
 def _singleton(): 
 if cls not in instances: 
 instances[cls] = cls(*args, **kw) 
 return instances[cls] 
 return _singleton 
 
@singleton 
class MyClass4(object): 
 a = 1 
 def __init__(self, x=0): 
 self.x = x 
 
one = MyClass4() 
two = MyClass4() 
 
two.a = 3 
print one.a 
#3 
print id(one) 
#29660784 
print id(two) 
#29660784 
print one == two 
#True 
print one is two 
#True 
one.x = 1 
print one.x 
#1 
print two.x 
#1

赶紧收藏起来吧~

最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在点击:“资料  即可领取。

赶紧入手,python面试题之Python如何实现单例模式?

相关文章:

  • 2021-12-24
  • 2022-12-23
  • 2021-09-26
  • 2021-12-31
  • 2021-11-12
  • 2021-10-30
  • 2021-09-21
猜你喜欢
  • 2021-04-06
  • 2021-08-14
  • 2021-11-27
  • 2022-12-23
  • 2022-12-23
  • 2021-07-07
相关资源
相似解决方案