python 单例模式,装饰类,装饰函数

这篇具有很好参考价值的文章主要介绍了python 单例模式,装饰类,装饰函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

reference

  • 知乎 python 实现单例模式的两种方式
  • stack overflow 装饰函数 vs 装饰类
  • medium Do we even need a class to realize singleton?

summary

单例模式大家肯定不陌生了,在读reference的两篇blog时突然发现用python实现单例模式的很多好玩之处。文章来源地址https://www.toymoban.com/news/detail-596657.html

  • 用类实现单例模式是各种语言比较通用的方式。在python中的实现就是装饰类
  • 在python中,函数也是object,所以也可以用装饰函数去实现
    唯一令人疑惑的就是,这里的调用装饰函数方式不知道是如何的,难道不会每次把instances清空吗
    def singleton(cls):
        instances = {}
        def getinstance():
            if cls not in instances:
                instances[cls] = cls()
            return instances[cls]
        return getinstance
    
    @singleton
    class MyClass:
        def __init__(self):
            print(f"creating a new object myclass")
            self.nothing = 1
        
        def getNothing(self):
            return self.nothing
        
        def addNothing(self):
            self.nothing += 1
    
  • python中module就是一个最典型的单例,所以想要单例的对象放到module中即可!

到了这里,关于python 单例模式,装饰类,装饰函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 13、c++使用单例模式实现命名空间函数

    本案例实现一个test命名空间,此命名空间内有两个函数,分别为getName()和getNameSpace(); 声明命名空间及函数 命名空间内实现单例类 实现一个单例类,构造函数要为private,自身对象为private 静态成员函数(才可以调用静态成员变量) 实现命名空间函数 首先调用的是类的静态

    2023年04月23日
    浏览(47)
  • 构造函数及es6类写单例模式

            前言,什么叫做单例模式?简单点说, 单例模式就是只能创建一个由构造函数及类的实体,多次调用得到的都是第一次new出来的对象 。用处有,例如在需要全局管理的资源、频繁访问的配置信息、日志记录器、 数据库连接池 等情况下都可以使用单例模式来优化资

    2024年04月23日
    浏览(31)
  • 系统学习Python——装饰器:函数装饰器-[添加装饰器参数:基础知识]

    分类目录:《系统学习Python》总目录 前面文章介绍的计时器装饰器有效运行,但是如果它可配置性更强的话,就会更好一一一例如提供一个输出标签并且可以打开或关闭跟踪消息,这些在一个多用途工具中可能很有用。装饰器参数在这里派上了用场:对它们适当编写后,我们

    2024年02月22日
    浏览(36)
  • Python---闭包,装饰器,设计模式之工厂模式

    1.  闭包定义 定义双层嵌套函数, 内层函数可以访问外层函数的变量 将内存函数作为外层函数的返回,此内层函数就是闭包函数 2. 闭包的好处和缺点 优点:不定义全局变量,也可以让函数持续访问和修改一个外部变量 优点:闭包函数引用的外部变量,是外层函数的内部变

    2024年02月02日
    浏览(34)
  • 【Python】Python函数的黑魔法:递归,嵌套函数与装饰器

    欢迎来到CILMY23的博客 本篇主题为: Python函数的黑魔法:递归,嵌套函数与装饰器 个人主页:CILMY23-CSDN博客 系列专栏:Python | C++ | C语言 | 数据结构与算法 感谢观看,支持的可以给个一键三连,点赞关注+收藏。 写在前头: 本期主要补充上篇未完成的内容,(点击链接

    2024年04月25日
    浏览(32)
  • python第6课(函数,内置高阶函数,匿名函数,装饰器)笔记

    变量名的查找规则; 在访问变量时,先查找本地变量,然后是包裹此函数的外部函数的内部变量,之后是全局变量,最后是内置变量 1 在函数内使用全局变量 2使用nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量 函数名是变量,它在创建函数时绑

    2024年02月11日
    浏览(47)
  • Python 函数(lambda 匿名函数、自定义函数、装饰器)基本使用指南

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段 对于单行函数,使用 lambda 表达式可以省去定义函数的过程,让代码更加简洁; 对于不需要多次复用的函数,使用 lambda 表达式可以在用完之后立即释放,提高程序执行的性能。 格式: 一般形式 含 if

    2024年02月08日
    浏览(50)
  • 惬意上手Python —— 装饰器和内置函数

     Python中的装饰器是一种特殊类型的函数,它允许用户在不修改原函数代码的情况下,增加或修改函数的行为。 具体来说, 装饰器的工作原理基于Python的函数也是对象这一事实,可以被赋值给变量、作为参数传递给其他函数或者作为其他函数的返回值。装饰器通常接受一个函

    2024年01月24日
    浏览(46)
  • python中函数,装饰器,迭代器,生成器

    1.函数可以作为参数进行传递 2.函数可以作为返回值进行返回 3.函数名称可以当成变量一样进行赋值操作 作用:在不改变原有函数调用的情况下,给函数增加新的功能          即可以在函数前面增加新的功能,但不改变原来的代码 可迭代的数据类型都会提供迭代器,即可以

    2024年02月07日
    浏览(41)
  • python函数装饰器参数统计调用时间和次数

    python在函数装饰器外层定义一个函数生成封闭作用域来保存装饰器入参,供装饰器使用。 描述 通过类的可调用实例装饰器来统计函数每次调用时间和总调用时间,以及调用次数。 (1) time.perf_counter()获取当前时间,单位秒; (2) 调用函数func前和后的时间差,为func的执行

    2024年02月01日
    浏览(78)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包