单例模式:只有一个实例
当所有实例都封装同一个数据时适用单例模式
# 单例模式
class P:
def __init__(self):
self.name = 'xxx'
self.age = 'xx'
def f1(self):
print (self.name, self.age)
pass
xx = P()
xx.f1()
举例说明:
# 创建连接池
class ConncetionPool: # ConncetionPoo连接池
__obj = None # 创建私有字段,用于判断
def __init__(self):
pass
@staticmethod # 静态方法
def get_obj():
if ConncetionPool.__obj: # 判断__obj
return ConncetionPool.__obj # 返回__obj
else:
ConncetionPool.__obj = ConncetionPool() # 创建对象并赋值给__obj
return ConncetionPool.__obj # 返回__obj
pool1 = ConncetionPool.get_obj() # 执行类的静态方法
print(pool1)
pool2 = ConncetionPool.get_obj() # 执行类的静态方法
print(pool2)
pool3 = ConncetionPool.get_obj() # 执行类的静态方法
print(pool3)
# for i in range(10):
# pool = ConncetionPool.get_obj() # 执行类的静态方法
# print('去连接池', pool, '中获取一个连接')
# conn = pool.get_connection
# print(conn)