鱼C论坛

 找回密码
 立即注册
查看: 1532|回复: 1

[技术交流] 第 44 讲 魔法方法 简单定制

[复制链接]
发表于 2018-4-21 11:00:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
测试题:
0.
import time as t

class MyTimer:
    def __init__(self):
        self.prompt = '未开始计时!'
        self.begin = 0
        self.end = 0
        self.unit = ['年','月','天','小时','分钟','秒']
        self.lasted = []
    
    def __str__(self):
        return self.prompt
    
    __repr__ = __str__

    def __add__(self,other):
        prompt = '合计时间为:'
        result = []
        for index in range(6):
            result.append(self.lasted[index] + other.lasted[index])
            if result[index] != 0:
                prompt += (str(result[index]) + self.unit[index])
        return prompt
    
    #开始计时函数
    def start(self):
        self.begin = t.localtime()
        self.prompt = '请调用stop()!'
        print('开始计时...')

    #结束计时函数
    def stop(self):
        if self.begin == 0:
            print('请先调用start()!')
        else:
            self.end = t.localtime()
            self.__calc()
            print('停止计时...')

    def __calc(self):
        self.prompt = '累计时间为:'
        #之前的做法
##        for index in range(6):
##            self.lasted.append(self.end[index] - self.begin[index])
##            if self.lasted[index]:
##                self.prompt += str(self.lasted[index])
##                self.prompt += self.unit[index]

        #把时间相减为负考虑进来

        for index in range(6):
            self.lasted.append(self.end[index] - self.begin[index])
            
            #对lasted进行操作,把数据换算成正的时间
        if self.lasted[5] <0:
            self.lasted[5] += 60
            self.lasted[4] -=1
        if self.lasted[4] <0:
            self.lasted[4] += 60
            self.lasted[3] -=1
        if self.lasted[3] <0:
            self.lasted[3] += 24
            self.lasted[2] -=1
        if self.lasted[2] <0:
            self.lasted[2] += 31
            self.lasted[1] -=1
        if self.lasted[1] <0:
            self.lasted[1] += 12
            self.lasted[0] -=1

            #把时间加到Prompt
        for index in range(6):
            if self.lasted[index] != 0:
                self.prompt += (str(self.lasted[index]) + self.unit[index])        
           
2.
import time as t

class MyTimer:
    def __init__(self,func,number = 10):
        self.prompt = '未开始计时!'
        self.begin = 0
        self.end = 0
        self.lasted = 0
        self.default_timer = t.perf_counter
        self.func = func
        self.number = number
    
    def __str__(self):
        return self.prompt
    
    __repr__ = __str__

    def timing(self):
        self.begin = self.default_timer()
        for each in range(self.number):
            self.func()
        self.end = self.default_timer()
        self.lasted = self.end - self.begin
        self.prompt = ('累计时间为:%.2f' % self.lasted + '秒')

    def set_timer(self,timer):
        if timer == 'perf_counter':
            self.default_timer = t.perf_counter
        elif timer == 'process_time':
            self.default_timer = t.process_time
        else:
            print('请输入perf_counter或者process_time')

def a():
    print('i')

# 记住self好似用了全局变量.
# 注意先后顺序.

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-26 23:04:23 | 显示全部楼层
import time as t

class My_time:
    def __init__(self):
        self.prompt = '未开始计时...'
        

    def __str__(self):
        return self.prompt
   
    __repr__ = __str__
   
    def start(self):
        print('计时开始...')
        self.begin = t.localtime()

    def stop(self):
        self.end = t.localtime()
        self._calc()
        print('计时结束...')

    def _calc(self):
        self.lasted = []
        self.prompt = '总共运行了'
        for index in range(6):
            self.lasted.append(self.end[index] - self.begin[index])
            self.prompt += str(self.lasted[index])

self.lasted和self.begin self.end没有初始的话 ,算时间不准,为什么会这样呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 03:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表