最近准备找工作了,在复习的时候发现有面试官问道单例模式的问题,想想以前学习过,就把以前学习过得知识点再做个总结。
网上也有很多博文是讲Python的单例模式的,但是讲的都比较笼统,一大推,没时间看,看完都十多分钟了。
import time
class ShoppingCar:
"""购物车"""
__instance = None
__has_init = False
def __new__(cls, *args, **kwargs):
time.sleep(1)
if cls.__instance is None:
cls.__instance = object.__new__(cls)
return cls.__instance
def __init__(self):
if ShoppingCar.__has_init is False:
self.total_price = 200
ShoppingCar.__has_init = True
非常推荐使用__new__的这种方法,支持多线程,随便折腾,不会存在问题。而且代码也较少,容易记忆。面试的时候可以直接手写出来。