|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 huyanmin 于 2021-3-20 15:20 编辑
#下面是小甲鱼43课关于计时器的源代码
import time as t
class MyTimer():
def __init__(self):
self.unit = ['年','月','天','小时','分','秒']
self.lasted = []
self.prompt = '未开始计时'
self.begin = 0
self.end = 0
def __repr__(self):
return self.prompt #此处的prompt带有self
__str__ = __repr__
#加法
def __add__(self,other):#此方法,是两个计时器对象相加,返回prompt局部变量
prompt='总共运行了'
result =[]
for index in range(6):
result.append(self.lasted[index]+other.lasted[index])
if result[index]:
prompt+=(str(result[index]) + self.unit[index])
return prompt #此处的prompt不带有self,所以是局部变量,他的作用范围就在这个add方法中,那么它是如何改变上面repr方法中的self.prompt的呢?如果prompt和self.prompt是没
有关系的,它只是返回两个MyTimer实例的prompt的和,那么__str__方法中self.prompt 是如何随着add方法的返回值的改变而改变呢?难道str方法天生具有搜索实例对象相加,相减,等的返回值的功能吗?
#开始计时
def start(self):
self.begin = t.localtime()
self.prompt = '提示,请先调用stop方法,结束计时'
print('计时开始')
#计时结束
def stop(self):
if self.begin:
self.end = t.localtime()
self._calc()
print('计时结束')
else:
print('提示,请先调用start方法,开始计时')
#内部方法,计算运行时间
def _calc(self):
self.lasted = []
self.prompt = '总共运行了'
for index in range(6):
self.lasted.append(self.end[index]-self.begin[index])
if self.lasted[index]:
self.prompt += (str(self.lasted[index]) + self.unit[index])
self.begin=0
self.end =0
|
|