单例模式:
某一个类,只有一个实例,自动实例化向整个系统提供这个实例
单例类写法:
class A(object):
__instance=None
def __new__(cls, *args, **kwargs):
if not cls.__instance:
cls.__instance=super(A, cls).__new__(cls,*args,**kwargs)
return cls.__instance
if __name__ == '__main__':
a=A()
print(id(a))
a1=A()
print(id(a1))
a2 = A()
print(id(a2))
id()指向对象的内存地址
单例模式的优缺点:
优点:
1、在单例模式中,活动的单例只有一个实例,对单例类的所有实例化得到的都是同样的一个实例,确保所有的对象访问的一个实例
2、提供了对唯一实例的受控访问
主要的一点:3、内存中只有一个对象,节约系统资源
4、可以实现可变数目的实例
5、避免对资源的多重占用
缺点:
1、不适用变化的对象,单例会引起数据错误
2、扩展有困难
3、开销问题
单例模式应用的场景:
资源管理类一般设计成单例模式
需要频繁实例化然后销毁的对象
创建对象耗时或者活飞资源过多但又经常用到的对象
有状态的工具类对象
频繁访问数据库或者文件的对象
随机选择:
import random
from random import choice
list_new=[1,2,3,4,'asd']
ret=random.choice(list_new)