装饰器小结加单例装饰器

python装饰器的理解

  1. 首先从定义和功能说吧

装饰器是不改变原有功能的情况下添加新的功能,感觉就是避孕套吧!粗熟理解,不喜勿喷,
而且还不改变原有代码的情况下哦
  1. 再从根本来说吧

得搬出我们得廖雪峰大大了,不知道得请百度 ,代码如下
def log(func):
   def wrapper(*args, **kwargs):
       print('call %s():'% func.__name__)
       return func(*args, **kwargs)
   return wrapper

@log
def now():
   print('2015-3-25')
本质就是一行代码,我每次搞不清思路时,都是用这么一行代码来思考的
now = log(now)
这就是本质,如果里面还有嵌套函数,无非就是多加个括号
不懂好好回头看看廖大的博客把
  1. 丢出链接吧

python中装饰器的六种形态,有点变形金刚的感觉,有点自嗨
https://www.jianshu.com/p/a405814f8786
这个简书讲得很好,我就不误人耳闻了
  1. 最后说下我项目中遇到的问题

    _instance = {}

    def _singleton(*args, **kargs):
        if cls not in _instance:
            _instance[cls] = cls(*args, **kargs)
        return _instance[cls]

    return _singleton


class A(object):
    a = 1

    def __init__(self, x=0):
        self.x = x


c = Singleton(cls=A)
z = c(1)
y = c(2)
print(id(z))
print(id(y))

总结下问题也算是一种积累和成长把,在我的第一份工作和任务中,
解决一个线程冗余问题,开始本地跑不了,连debug都不行,着实让我难受了好一阵子,
好不容易本地能跑了,还是继续蒙蔽,多线程,debug还是没卵用,上面是原理把,
后来自己一直各种蒙,各种改,多线程和多进程看了,发现压根就没问题,看了感觉
一个文件用了递归,感觉问题可能就在这里,递归调用出现的线程问题就在这,然后也是瞎改,随便抄着改了一下,就好了,那真的叫开心啊,然后看了下python的单例模式,发现我还是太浅薄了,只知道自己最简单的单例模式,后来看到装饰器,也行,但这个原理记得不是很清楚,毕竟要改写嘛,琢磨了单例装饰器的原理,然后就写了这篇博客。
最后附上恩人链接,第一次用markdown写博客,不是很会玩,我的表演完毕,谢谢大家
https://www.cnblogs.com/huchong/p/8244279.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值