wuyanzulqq 发表于 2020-11-23 09:30:52

第44讲 视频讲的代码有个地方不懂

本帖最后由 wuyanzulqq 于 2020-11-23 09:32 编辑

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 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._count()
            print("计时结束!")

    #计算差值
    def _count(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)




求大佬解释一下   def __str__(self):
      return self.prompt

    __repr__ = __str__这块代码 越详细越好

西瓜味的苹果 发表于 2020-11-23 09:30:53

1.这两个函数都是内置函数,魔法方法,功能差不多,__str__本质是调用__repr__的
2.__str__相当于在你实例类的时候,自动执行的函数,就比如__init__是初始化类变量的功能,__str__日常所做的通俗的就是print了,
3.怎么跟你形容,就是类是人体,__str__,__init__,是里面的器官,只要你生下来那一刻,器官就随着你的出生而自动出生,并做属于自己的功能。
4.至于__repr__=__str__,就是让两个函数相同,你去掉这句也行,把__str__换成__repr__,效果也是一样的
5.如果有错误,尽情指正
页: [1]
查看完整版本: 第44讲 视频讲的代码有个地方不懂