python-单例模式
2021-04-19 09:27
标签:rgs 创建对象 object 就是 div col 完成 python self 1.单例是什么 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,单例模式是一种对象创建型模式。 2. 创建单例-保证只有1个对象 3. 创建单例时,只执行1次__init__方法 完 python-单例模式 标签:rgs 创建对象 object 就是 div col 完成 python self 原文地址:https://www.cnblogs.com/peiya/p/13290004.html# 单例模式 在程序中这个类创建出来的对象 只有一个(也就是占用一份内存地址)
# 单例模式 也只会走一次__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)
# 为了节约内存