python.魔法方法

计时器

import time as t    #时间系数的常量定义

class 计时器():
    def __init__(self):               #  __init__ 方法 用来对实例的属性进行初使化
        self.unit = ["年","月","天","时","分","秒"]
        self.prompt = "未开始计时!"
        self.lasted = []
        self.start = 0                #类的方法与属性 名字一样的话,属性会覆盖方法    
        self.stop = 0


    def __str__(self):       #重构str方法,让调用直接打印字符结果
        return self.prompt   #return 函数的返回值

    __repr__ = __str__       # 重构__repr__方法后,不管直接输出对象还是通过print打印的信息都按我们__repr__方法中定义的格式进行显示了

    #计算加法:
    def __add__(self, other):
        prompt = '总共运行了'
        result = []          #建立一个存储列表result
        for index in range(6):
            result.append(self.lasted[index] + other.lasted[index])  #在储蓄列表result 两个时间函数相加
            if result[index]:
                prompt += (str(result[index]) + self.unit[index])
        return prompt


    #开始计时
    def 开始(self):
        self.start = t.localtime()
        self.prompt = "提示,请先调用【结束()】停止计时"
        print("计时开始....")

    #停止计时
    def 结束(self):
        if not self.start :    #如果self.start等于0则提示先开始计时
            print("提示,请先调用【开始()】进行计时")
        else:
            self.stop = t.localtime()
            self._calc()              #调用内部方法
            print("计时结束!")

    #内部方法 计算运行时间
    def _calc(self):
        self.lasted = []               #建立(实例化)一个存储列表lasted
        self.prompt = "总共运行了"
        for index in range(6):         # range()个函数可以创建一个数字元素组成的列表
            self.lasted.append(self.stop[index]-self.start[index])   #在储蓄列表lasted内添加起始时间跟结束时间,且把相应数字进行互减
            if self.lasted[index]:     #判断储蓄列表是否为0如果储蓄列表index为0则不打印下面这一句
                self.prompt += (str(self.lasted[index])+self.unit[index])                   #转换计时时间为字符串,且跟字符串“总共运行了”相结合

        # 为下一轮计时初始化变量
        self.start = 0
        self.stop = 0

猜你喜欢

转载自blog.csdn.net/qq_15907907/article/details/79962547