马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 小六12 于 2017-8-30 19:41 编辑 import time as t
class Mytimer():
#初始化需要的实例变量
def __init__(self,func,number=1000000:
self.unit=['年','月','天','小时','分','秒']
self.prompt='未开始计时'
self.lasted=0.0
self.func=func
self.number=number
self.default_timer=t.perf_counter
#重载__str__(self)魔法方法
def __str__(self):
return self.prompt
__repr__=__str__
def __add__(self,other):
result=self.lasted+other.lasted
prompt='总共运行了%0.2f秒'%result
return prompt
#统计函数运行时间,要在shell中输入实例变量名.timing()才会进行统计
def timing(self):
self.begin=self.default_timer()
for i in range(self.number):
self.func()#可问题是为什么类中明明没有定义func()却也能够运行。
self.end=self.default_timer()
self.lasted=self.end-self.begin
self.prompt='总共运行了%0.2f秒'%self.lasted
#设置计时器(time.perf_counter()或time.process_time())
def set_timer(self,timer):
if timer=='process_time':
self.default_timer=t.process_time
elif timer=='perf_counter':
self.defaultimer=t.perf_counter
else:
print('输入无效,请输入perf_counter或process_time')
这个类中定义的timing()方法是可以计算函数的运行时间,疑问是:self.func()这个,我的理解应该算是没有定义为类方法,只在def timing(self):中出现的,为什么可以在执行实例变量名.timing()时运行?不该是报错AttributeError吗?
本帖最后由 向西而笑 于 2017-8-30 19:55 编辑
在def __init__()的时候传入了一个func,这个func就是一个函数对象,然后就可以func()执行
|