繁体   English   中英

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

[英]how to use decorator in class method

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

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 位置 arguments 但给出了 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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM