|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 醉酒青牛 于 2015-12-2 13:27 编辑
小牛有话说:
各位鱼油,大家好。我是小牛,如果您已经看完或者正在看鱼神的《零基础入门学习Python》视频,想随时复习前面的知识点却又不想花太多时间和精力重翻视频,来这里《零基础入门Python学习》整理瞅瞅小牛呕心做的的视频内容的总结吧^_^,如果觉得有用的话,可以点击所属淘贴右上角的“订阅”按钮,这样以后就能够随时看到小牛做的最新的整理了。
本期主要内容导读:
这一期我们归纳一下鱼神第四十四讲“魔法方法:简单定制”。这一期里面鱼神主要是通过定义一个实现计时器功能的类来介绍魔法方法的用途,主要涉及到的魔法方法有 __init__,__str__,__repr____add__以及一个time模块下的localtime方法,下面将详细介绍他们的用法。
1. __init__,__str__,__repr____add__魔法方法定义过程
- import time as t
- class MyTimer:
- def __init__(self): #初始化类内的变量
- self.unit = ['年','月','天','小时','分钟','秒']
- self.begin = 0
- self.end = 0
- self.lasted = []
- self.prompt = "尚未开始计时!"
- 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]:
- prompt += (str(result[index]) + self.unit[index])
- return prompt
- def start(self):
- print("开始计时...")
- self.begin = t.localtime()
- print()
- self.prompt = "提示,请先调用stop()停止计时!"
- def stop(self):
- if self.begin == 0:
- print("提示:请先调用start()开始计时!")
- else:
- self.end = t.localtime()
- self._calctime()
- print("结束计时...")
- def _calctime(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.unit[index])
- #将对象的开始,结束变量置为初始值以方便下次调用
- self.begin = 0
- self.end = 0
复制代码
调用过程如下:
>>> t1 = MyTimer() #自动调用t1.__init__()方法
>>> t1.start()
开始计时...
>>> t1.stop()
结束计时...
>>> t1 #自动调用t1.__str__()方法
总共运行了 7秒
>>> print(t1) #自动调用t1.__repr__()方法
总共运行了 7秒
>>> t2 = MyTimer()
>>> t2.stop()
提示:请先调用start()开始计时!
>>> t2.start()
开始计时...
>>> t2.stop()
结束计时...
>>> t2
总共运行了 21秒
>>> t1 + t2 #自动调用t1.__add__()方法
'总共运行了28秒'
2. time.localtime()方法
用于返回一个元组,元组前六位的值是当前年、月、日、时、分、秒的值。 |
|