|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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()[color=Red]#可问题是为什么类中明明没有定义func()却也能够运行。[/color]
- 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()执行
|
|