669021067 发表于 2021-8-23 00:55:15

MyTimer运行时出错,显示unsupported operand type(s)

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

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

    __repr__ = __str__
    # 开始计时
    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


t1=MyTimer()
t1.start()
计时开始...
t1.stop()
计时结束
t1
总共运行了3秒
t2=MyTimer()
t2.start()
计时开始...
t2.stop()
计时结束
t2
总共运行了7秒
t1+t2
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'MyTimer' and 'MyTimer'
这是那里出问题了找了半天

冬雪雪冬 发表于 2021-8-23 08:49:33

+的魔法方法是add,不是and

669021067 发表于 2021-8-23 12:51:08

冬雪雪冬 发表于 2021-8-23 08:49
+的魔法方法是add,不是and

还有一个问题,上面的运行是在控制台运行的,在pycharm里面怎么运行
页: [1]
查看完整版本: MyTimer运行时出错,显示unsupported operand type(s)