文章目录

  • 1.time模块
  • 2.\_\_str\_\_和\_\_repr\_\_
  • 3.定制一个计时器的类

1.time模块

  • 使用time模块的localtime方法获取时间
  • 扩展阅读:time 模块详解(时间获取和转换)
    有关time模块的localtime方法获取时间,参考 time.localtime返回struct_time的时间格式;
  • time模块的localtime方法获取的时间既可以用属性,也可以用索引去获取它
  • (P44)魔法方法:time模块,\_\_str\_\_和\_\_repr\_\_ ,定制一个计时器的类_方法名

2.__str__和__repr__

  • 表现你的类:__str__ 和 __repr__
  • 打印时,需要字符串输出的时候,就会找到str的魔法方法__str__,并将其打印出来

    直接输入b,就会打印字符串

3.定制一个计时器的类

  • eg:
import time as t   #导入时间模块,调用对象t
#t.XXX使用time模块的哪个方法

class Mytimer():
	##所有属于实例对象的变量先在__init__先定义
    def __init__(self):
    	##定义一个self.unit列表,用来存放单位
        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 
        prompt = "总共运行了"
        result = []
        for index in range(6):
            result.append(self.lasted[index] + other.lasted[index])
            if result[index]:
                prompt += (str(result[index]) + self.unit[index])
        return prompt
                           
    #开始计时
    def start(self):    #方法,属性名和方法名不能相同
        if not self.stop:
            self.prompt = "提示:请先调用stop()停止计时!"
        else:
            self.begin = t.localtime()
            print('计时开始...')

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

    #内部方法,计算运行时间
    def _calc(self):
        self.prompt = "总共运行了"
        ##比较时间元组的前6个元素
        for index in range(6):
            self.lasted.append(self.end[index] - self.begin[index])
            ##列表的某元素值非0才进来
            if self.lasted[index]:
                self.prompt += (str(self.lasted[index]) + self.unit[index])
        #为下一轮计时初始化变量
        self.begin = 0
        self.end = 0

>>> t1 = Mytimer()
>>> t1.stop()
提示:请先调用start()进行计时!
>>> t1.start()
计时开始...
>>> t1.stop()
计时结束!
>>> t1
总共运行了4秒
>>> t2 = Mytimer()
>>> t2.start()
计时开始...
>>> t2.stop()
计时结束!
>>> t2
总共运行了4秒
>>> t1 + t2
'总共运行了8秒'