您的位置:首页 > 编程语言 > Python开发

python学习笔记分享(二十六)魔法方法(三)简单定制

2018-08-14 21:32 232 查看

IT Xiao Ang Zai 8月14号

现在,让我们进行继续今天的python学习:

版本:python3.64

编程软件:IDLE

 

一:简单要求

1.定制一个计时器的类。

2.start和stop方法代表启动计时和停止计时。

3.假设计时器t1,print(t1)和直接调用t1均显示结果。

4.当计时器未启动或已经停止计时,调用stop方法会给予温馨的提示。

5.两个计时器对象可以进行相加:t1+t2。

6.只能使用提供的有限资源完成。

 

二:需要下面的资源

1.使用time模块的localtime方法获取时间(有关time模块可参考:http://bbs.fishc.com/thread-51326-1-1.html)。

2.time.localtime返回struct_time的时间格式。

3.表现你的类:__str__()和__repr__()。

有关__str__()和__repr__()的区别大家可以参考如下:

https://blog.csdn.net/ITxiaoangzai/article/details/81568970

如下:

 

三:有了上面的知识,下面就定制这个类

[code]import time as t

class MyTimer:
# 开始计时
def start(self):
self.start = t.localtime()
print("计时开始")
# 停止计时
def stop(self):
self.stop = t.localtime()
print("计时结束")
"""把框架弄好了以后,应该考虑怎样进行计算了,localtime()返回的是一个时间元组的结构,
只需要前边6个元素,然后stop元素减去start元素,将差值存放在一个新的列表里"""
# 停止计时
def stop(self):
self.stop = t.localtime()
self._calc()
print("计时结束")
# 内部方法,计算运行时间
def _calc(self):
self.lasted = []
self.prompt = "总共运行了"
for index in range(6):
self.lasted.append(self.stop[index] - self.start[index])
self.prompt += str(self.lasted[index])
print(self.prompt)

t1 = MyTimer()
t1.start()
t1.stop()

 

运行结果:

 

现在已经基本实现计时功能了,接下来需要完成"print(t1)和直接调用t1均显示结果",那就需要通过重写__str__()和__repr__()魔法方法来实现:
 

[code]>>> def __str__(self):
return self.prompt
__repr__ = __str__
>>> t1 = MyTimer()
>>> t1.start()
计时开始
>>> t1.stop()
计时结束
>>>t1
总共运行了0001-59-43

 

关于定制就先介绍到这里。

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: