python-单例模式
Posted 忆梦,惊梦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-单例模式相关的知识,希望对你有一定的参考价值。
1.单例是什么
确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,单例模式是一种对象创建型模式。
2. 创建单例-保证只有1个对象
3. 创建单例时,只执行1次__init__方法
# 单例模式 在程序中这个类创建出来的对象 只有一个(也就是占用一份内存地址) # 单例模式 也只会走一次__init__方法(保证这个单例对象的属性也是唯一的)(name=小明 age=20) # 合理的使用内存(避免内存浪费) class Person(object): # 定义一个类属性 保存这个类创建的对象 __instance = None # 定义一个类属性 判断是否是第一次走init方法 __is_first = True # 创建对象 # 重写new方法 是为了完成单例模式中的对象地址唯一 def __new__(cls, *args, **kwargs): # 判断是否通过这个类创建过对象 if not cls.__instance: # 如果没有值需要创建 cls.__instance = object.__new__(cls) # 创建对象保存起来 return cls.__instance # 如果有值直接返回 def __init__(self, name, age): # 判断是否是第一次 if Person.__is_first: # 赋值一次 self.name = name self.age = age # 设置类属性is_first 为False Person.__is_first = False # 创建对象 xiaoming = Person("小明", 20) xiaohong = Person("小红", 21) xiaoyang = Person("小阳", 22) print(xiaoming.name, xiaohong.name, xiaoyang.name) # 小明 小明 小明 # num = None # # 如果不为none 也就是真 # if not num: # print("测试") # 单例的好处??? class HMTest(object): def my_func(self, a, b): return a + b # 在程序中 需要计算多次求和操作 比如1000次 可以省掉999分内存 # 每次使用 # 实例化一个对象 # hm = HMTest() # hm.my_func(10, 20) # 为了节约内存
完
以上是关于python-单例模式的主要内容,如果未能解决你的问题,请参考以下文章