NCBB 发表于 2020-4-1 21:15:54

python044魔术方法:简单定制例子的疑惑

#开始计时
    def start(self):
      self.begin = t.localtime()
      self.prompt = "提示,请先调用stop()停止计时!"
      print("计时开始……")

    #停止计时
    def stop(self):
      if not self.begin:
            print("提示:请先调用start()进行计时!")
      else:
            self.end = t.localtime()
            self._calc()
            print("计时结束!")

1、为什么start()中的self.prompt = "提示,请先调用stop()停止计时!"显示不用判断是否使用过stop()?
2、我以为在t1.start()后会直接跳出self.prompt = "提示,请先调用stop()停止计时!"
3、如果我只输入了
      t1 = Mytime()
      t1.start()
_calc() 会不会运行一遍

zltzlt 发表于 2020-4-1 21:18:53

1. 因为用户不可能在设置 self.prompt 之前就调用了 stop()
2. 这里只是设置,没有打印
3. 不会

十月故里 发表于 2020-4-1 21:31:35

第一个问题其实就是一个逻辑
如果你用过了stop,相当于程序已经跑完一次,都归零了,这时候start没什么说的了
而如果你已经start之后,再次调用start,就可以提示你你已经开始计时了,请先stop

第二个问题
你执行的start并没有输出self.prompt的内容,他这里只是改变了实例对象属性值而已

第三个问题
_calc() 是只有在你start之后运行stop才会执行的
页: [1]
查看完整版本: python044魔术方法:简单定制例子的疑惑