huyanmin 发表于 2021-3-19 18:09:44

python 43课 计时器视频课程,求详解

本帖最后由 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+other.lasted)
            if result:
                prompt+=(str(result) + self.unit)
      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-self.begin)
            if self.lasted:
                self.prompt += (str(self.lasted) + self.unit)
      
      self.begin=0
      self.end =0

qiuyouzhi 发表于 2021-3-19 18:47:31

这个prompt和self.prompt是没有关系的,它只是返回两个MyTimer实例的prompt的和罢了。

huyanmin 发表于 2021-3-20 14:52:07

qiuyouzhi 发表于 2021-3-19 18:47
这个prompt和self.prompt是没有关系的,它只是返回两个MyTimer实例的prompt的和罢了。

如果prompt和self.prompt是没有关系的,它只是返回两个MyTimer实例的prompt的和罢了,那么__str__方法中self.prompt 是如何随着add方法的返回值的改变而改变呢

qiuyouzhi 发表于 2021-3-20 16:34:00

huyanmin 发表于 2021-3-20 14:52
如果prompt和self.prompt是没有关系的,它只是返回两个MyTimer实例的prompt的和罢了,那么__str__方法中s ...

?改变了吗

huyanmin 发表于 2021-3-22 06:56:04

qiuyouzhi 发表于 2021-3-20 16:34
?改变了吗

视频中
>>>t1+t2后改变了

qiuyouzhi 发表于 2021-3-22 17:28:38

huyanmin 发表于 2021-3-22 06:56
视频中
>>>t1+t2后改变了

那肯定的啊
这就是__add__方法的定义啊
t1.prompt 和 t2.prompt是不变的
页: [1]
查看完整版本: python 43课 计时器视频课程,求详解