文章目录
- 1.time模块
- 2.\_\_str\_\_和\_\_repr\_\_
- 3.定制一个计时器的类
1.time模块
- 使用time模块的localtime方法获取时间
- 扩展阅读:time 模块详解(时间获取和转换)
有关time模块的localtime方法获取时间,参考 time.localtime返回struct_time的时间格式; - time模块的localtime方法获取的时间既可以用属性,也可以用索引去获取它
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秒'
- 参考:小甲鱼零基础入门学习python笔记,第四十四课:魔法方法:简单定制(计时器的类)