美文网首页
记录两个装饰器

记录两个装饰器

作者: 是立品啊 | 来源:发表于2021-12-01 11:19 被阅读0次

统计函数被调用次数的装饰器

import functools


def counter(func):
    @functools.wraps(func)
    def tmp(*args, **kwargs):
        tmp.count += 1
        return func(*args, **kwargs)

    tmp.count = 0
    return tmp




@counter
def func():
    print(func.count)
 
func()  #1
func()  #2
func()  #3

类中的某个方法用于装饰类中的其他方法

from operator import methodcaller


def do_something(funName='other', a='hello', b='world'):
    def wrapper(fun):
        def inner(*args, **kwargs):
            cls = args[0]
            methodcaller(funName,a=a,b=b)(cls)
            print(f'调用了方法{funName},参数a={a},参数b={b}')
            return fun(*args, **kwargs)

        return inner

    return wrapper


class Clazz():
    @do_something()
    def func(self, x, y):
        c = x + y
        print('{}+{}={}'.format(x, y, c))

    @do_something(funName='other',a='你好',b='世界')
    def func2(self, x, y):
        c = x + y
        print('{}+{}={}'.format(x, y, c))

    def other(self, a, b):

        print(f'a is {a},b is {b}')


if __name__ == '__main__':

    c =Clazz()

    c.func(x=1,y=2)
# a is hello,b is world
# 调用了方法done,参数a=hello,参数b=world
# 1+2=3

    c.func2(x=100,y=200)
# a is 你好,b is 世界
# 调用了方法other,参数a=你好,参数b=世界
# 100+200=300

相关文章

  • 记录两个装饰器

    统计函数被调用次数的装饰器 类中的某个方法用于装饰类中的其他方法

  • Python装饰器

    Python装饰器 一、函数装饰器 1.无参装饰器 示例:日志记录装饰器 2.带参装饰器 示例: 二、类装饰器 示例:

  • 《设计模式》之装饰器模式

    装饰器模式 装饰器模式中主要有两个角色: 装饰器(夹克,帽子) 被装饰的对象(老王) 装饰器和被装饰的对象有两个特...

  • 装饰器

    闭包 nonlocal这个就是修改外部参数的值 装饰器 装饰器有结论 两个装饰器装饰一个函数 装饰器传参

  • python中怎样使用装饰器

    闭包 nonlocal这个就是修改外部参数的值 装饰器 装饰器有结论 两个装饰器装饰一个函数 装饰器传参

  • Python装饰器的几种类型

    装饰器的原理就是闭包,这在前面已经提到过了。本篇主要记录一下装饰器的几种类型。 无参数装饰器 有参数装饰器 类装饰...

  • 装饰器模式

    装饰器模式 装饰器模式中主要有两个角色: 装饰器; 被装饰的对象。用老王买装备的例子来说,老王就是被装饰的对象,而...

  • python 多个装饰器的调用顺序!

    python 多个装饰器的调用顺序 一般情况下,在函数中可以使用一个装饰器,但是有时也会有两个或两个以上的装饰器。...

  • 装饰器

    """@装饰器- 普通装饰器- 带参数的装饰器- 通用装饰器- 装饰器装饰类- 内置装饰器- 缓存装饰器- 类实现...

  • Day04 - Python基础4

    Day04的课程要点记录详细教程地址:Day4 - Python基础4 | python装饰器 一、装饰器 1.1...

网友评论

      本文标题:记录两个装饰器

      本文链接:https://www.haomeiwen.com/subject/ccrsxrtx.html