麻烦大家看个作业题
这是第44讲关于计时器的课后作业,看不懂这个代码啊{:5_104:} 问题已经标红了import time as t
class MyTimer:
def __init__(self):
self.prompt = "未开始计时!"
self.lasted = 0.0
self.begin = 0
self.end = 0
self.default_timer = t.perf_counter #这里调用的是perf_counter()方法为什么没有带括号啊
def __str__(self):
return self.prompt
__repr__ = __str__
def __add__(self, other):
result = self.lasted + other.lasted
prompt = "总共运行了 %0.2f 秒" % result
return prompt
# 开始计时
def start(self):
self.begin = self.default_timer() #代码中哪里有default_timer()方法啊? 上面语句:self.default_timer = t.perf_counter 其中default_timer不是属性吗?
self.prompt = "提示:请先调用 stop() 停止计时!"
print("计时开始...")
# 停止计时
def stop(self):
if not self.begin:
print("提示:请先调用 start() 进行计时!")
else:
self.end = self.default_timer()
self._calc()
print("计时结束!")
# 内部方法,计算运行时间
def _calc(self):
self.lasted = self.end - self.begin
self.prompt = "总共运行了 %0.2f 秒" % self.lasted
# 为下一轮计时初始化变量
self.begin = 0
self.end = 0
# 设置计时器(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.default_timer = t.perf_counter
else:
print("输入无效,请输入 perf_counter 或 process_time") 本帖最后由 阿奇_o 于 2021-5-7 16:53 编辑
类的属性和方法,本质上都属于 “类的成员”
至于函数方法名,带不带括号,根据你的需要来——
1. 带上() 就会马上执行该函数方法的代码逻辑; 不带上,就只是引用 该函数在内存中的地址(可等待需要时,再加上(),来执行)。
2. 如果该名称,不是可执行的函数方法,而是一般对象,就会类型报错,如 TypeError: 'int' object is not callable
-- 至于,计时器的逻辑,就 你用一个变量记录它开始的时间点,然后结束时,用另一个变量记录结束的时间点,两个变量相减,不就是 过程时间了吗?
带括号代表返回值,而不带代表这个函数本身 阿奇_o 发表于 2021-5-7 16:49
类的属性和方法,本质上都属于 “类的成员”
至于函数方法名,带不带括号,根据你的需要来——
谢谢您{:5_109:}
页:
[1]