python 实现单例模式

1 篇文章 0 订阅
1 篇文章 0 订阅

1.单例模式:

单例是一种特殊的类,这种类只能创建一次实例。

2.单例的应用:

windows中的回收站用的就是单例模式,你可以多双击打开一下试试,它只能够被打开一次。我的电脑就不一样,可以能够打开多次
日志模块,只需要一个实例就可以在全局打印日志了。
数据库的连接。

3.简单实例实现

下面这个实例实现了一个类创建两个实例,两个实例之间进行对比是否是同一实例以及实例的属性是否发生改变。
 具体实例应用可搜索python实现单例日志模块或者python实现单例数据库连接模块等。

4.推荐链接

这个链接讲的单例模式的应用以及它的优点,大家可以参考一下

import time


def singleton(cls):
    instances = {}

    def wrapper(*args, **kwargs):
        if cls not in instances:
            instances[cls] = cls(*args, **kwargs)
            print(instances)
        return instances[cls]

    return wrapper


@singleton
class StudentInfo(object):
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex


@singleton
class StudentPart(object):
    pass


foo1 = StudentInfo("niu", '19', 'nan')
print(foo1.name, foo1.age, foo1.sex)
time.sleep(5)
foo2 = StudentInfo("zha ng", '20', 'nv')
print("-----------------------")
print(foo1.name, foo1.age, foo1.sex)
print(foo2.name, foo2.age, foo2.sex)

part1 = StudentPart()
part2 = StudentPart()

print(foo1 is foo2)
print(part1 is part2)

5.实现结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值