在python面试中必问的两组代码(python的单例模式)
python的单例模式
单例模式:比如你在某地工作,你有回出差在附近。那你是不可能住哪里就在那里买一套房吧?而你回选择力公司附近买一套房就好。单例模式如此,就是在一个类中定义一个私有属性实例化共接下来调用,不需要创建更多的实例来浪费资源。
单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
class getline(object):
__raw = None
def __new__(cls, *args, **kwargs):
if cls.__raw == None:
print('创建单例')
cls.__raw = object.__new__(cls)
print('创建完成')
return cls.__raw
else:
print('已经有单例了')
return cls.__raw
get1 = getline()
print('####################')
get2 = getline()
print('$$$$$$$$$$$$$$$$$$$$$')
get3 = getline()
作用:
- Python的logger就是一个单例模式,用以日志记录
- Windows的资源管理器是一个单例模式
- 线程池,数据库连接池等资源池一般也用单例模式
- 网站计数器