【问题标题】:how to use decorator in class method如何在类方法中使用装饰器
【发布时间】:2022-01-02 12:51:19
【问题描述】:

如何在类方法中使用装饰器

import time


def myTimer(func, *args, **kwargs):
    def wrapper():
        start = time.perf_counter()
        func(*args, **kwargs)
        elapsed_time = time.perf_counter() - start
        print(elapsed_time)

    return wrapper


class Example:
    def __init__(self):
        pass

    @myTimer
    def data(self):
        return [i for i in range(10000)]


e = Example()
e.data()

out_put = TypeError: wrapper() 接受 0 个位置参数,但给出了 1 个

【问题讨论】:

  • *args, **kwargs 参数应该是 wrapper,而不是 myTimer

标签: python decorator wrapper class-method


【解决方案1】:

@khelwood 先这么说,但我正在尝试这个编辑

def myTimer(func):
    def wrapper(*args, **kwargs):
        start = time.perf_counter()
        func(*args, **kwargs)
        elapsed_time = time.perf_counter() - start
        print(elapsed_time)

    return wrapper


class Example:
    def __init__(self):
        pass

    @myTimer
    def data(self):
        return [i for i in range(10000)]


e = Example()
e.data()

【讨论】:

    猜你喜欢
    • 2014-01-14
    • 2020-01-11
    • 2019-02-03
    • 2020-11-30
    相关资源
    最近更新 更多