hhjdsd 发表于 2020-6-6 07:36:35

魔法方法:简单定制 课堂例题出错

import time as t

class MyTimer():
    def __init__(self):
      self.unit = ['年','月','天','小时','分钟','秒']
      self.prompt = "未开始计时!"
      self.lasted = []
      self.begin = 0
      self.end = 0

    def __str__(self):
      return self.prompt

    __repr__ = __str__

    def __add__(self,other):
      prompt = "总共运行了"
      result = []
      for index in range(6):
            result.append(self.lasted + other.lasted)
            if result:
                prompt += (str(result) + self.unit)
      return prompt

    # 开始计时
    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("计时结束!")

    # 内部方法,计算运行时间
    def _calc(self):
      self.lasted = []
      self.prompt = "总共运行了"
      for index in range(6):
            self.lasted.append(self.end(index) - self.begin)
            if self.lasted:
                self.prompt += (str(self.lasted) + self.unit)
      # 为下一轮计时初始化变量
      self.begin = 0
      self.end = 0

hhjdsd 发表于 2020-6-6 07:37:06

照着视频打的{:10_285:}

xiaosi4081 发表于 2020-6-6 07:51:12

self.lasted.append(self.end(index) - self.begin)
这里的end是一个time.struct_time类型的object

小甲鱼的铁粉 发表于 2020-6-6 07:58:35

{:10_250:}

sunrise085 发表于 2020-6-6 08:04:14

本帖最后由 sunrise085 于 2020-6-6 08:06 编辑

照着视频打的,也打错了。
self.lasted.append(self.end(index) - self.begin)
你没发现这一行的两个index不一样么?index是下标,end后面的index你放在小括号里了,下标应该放进中括号里面。
错误提示很明显啊,小括号是调用,错误提示说,类型错误,time.struct_time类型的object不能被调用。

xiaosi4081 发表于 2020-6-6 08:11:50

import time as t

class MyTimer():
    def __init__(self):
      self.unit = ['年','月','天','小时','分钟','秒']
      self.prompt = "未开始计时!"
      self.lasted = []
      self.begin = 0
      self.end = 0

    def __str__(self):
      return self.prompt

    __repr__ = __str__

    def __add__(self,other):
      prompt = "总共运行了"
      result = []
      for index in range(6):
            result.append(self.lasted + other.lasted)
            if result:
                prompt += (str(result) + self.unit)
      return prompt

    # 开始计时
    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("计时结束!")

    # 内部方法,计算运行时间
    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

hhjdsd 发表于 2020-6-6 08:26:04

sunrise085 发表于 2020-6-6 08:04
照着视频打的,也打错了。
self.lasted.append(self.end(index) - self.begin)
你没发现这一行的两个inde ...

打着打着打糊涂了啊{:10_250:}{:10_250:}
页: [1]
查看完整版本: 魔法方法:简单定制 课堂例题出错