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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值