首页 > 解决方案 > 它说:AttributeError:'function'对象没有属性'time_taken'

问题描述

import time


def profile(function):
    def wrapper(*args):
        start_time = time.time()
        function(*args)
        end_time = time.time()
        function.time_taken = end_time-start_time
        return exec_time
    return wrapper

"""
@profile
def calsqr(a,b):
    return a**b
"""
@profile
def expensive_operation():
   import time
   time.sleep(3)
   return 1


print(expensive_operation.time_taken)
assert expensive_operation() == 1

标签: python

解决方案


您需要分配time_taken给包装函数,并首先调用它才能访问time_taken变量

import time


def profile(function):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        ret_value = function(*args, **kwargs)
        end_time = time.time()
        wrapper.time_taken = end_time-start_time
        return ret_value

    return wrapper

"""
@profile
def calsqr(a,b):
    return a**b
"""
@profile
def expensive_operation():
   import time
   time.sleep(3)
   return 1


assert expensive_operation() == 1
print(expensive_operation.time_taken)

推荐阅读