python的入门23
- 1、简单定制
1、简单定制
基本要求:
– 定制一个计时器的类
– start和stop代表开始计时和停止计时
– 假设计时器对象t1,print(t1)和直接调用t1均显示结果
– 当计时器未启动或停止计时时,调用stop方法会给予温馨的提示
– 两个计时器对象可以相加:t1 + t2
– 只能使用提供的有限资源完成
=====================================================
输入t1显示结果(显示字符串),要实现这个功能这时候就需要重写__str__ 和 __repr__方法
class A:
def __str__(self):
return "I LOVE AI"
a = A()
print(a)
class B:
def __repr__(self):
return "I LOVE AI"
b = B()
print(b)
#要想实现print(对象)或者直接调用对象,就必须使用__str__ 和__repr__方法
整体程序的代码
import time as t
class Mytimer():
def __init__(self):
# 定义一个列表存放时间的单位,以便程序运行后输出的结果直接是带单位的结果:如:总共运行了:3秒
self.unit = ['年', '月', '天', '小时', '分钟', '秒']
self.prompt = '未开始计时!'
self.lasted = []
self.begin = 0
self.end = 0
# 实现直接调用对象来输出内容
def __str__(self):
return self.prompt
# __str__ 赋值给 __repr__
__repr__ = __str__
# 两个对象相加
def __add__(self, other):
prompt = "总共运行了"
result = []
for index in range(6):
result.append(self.lasted[index] + other.lasted[index])
if result[index]: # 如果result是空的话执行
prompt += (str(result[index]) + self.unit[index])
return prompt
# 开始计时
def start(self): # self表示对象的引用
self.begin = t.localtime()
self.prompt = '提示:请先调用stop()停止计时'
print('计时开始...')
# 停止计时
def stop(self):
if not self.begin:
print("提示:请先调用start()进行计时!")
else:
self.end = t.localtime()
# 结束计时时并进行计算,即对象.内部方法
self._clac()
print('计时结束!')
# 内部方法(_方法名),计算运行时间
def _clac(self):
# 计算的结果放在一个列表里面
self.lasted = []
# 定义一个提示的变量
self.prompt = '总共运行了'
# 依次遍历localtime的索引
for index in range(6):
# 用结束时间减去开始时间得到运行的时间,并把结果放到lasted[]列表内
self.lasted.append(self.end[index] - self.begin[index])
# 把每一次计算的结果进行一次追加
if self.lasted[index]: # 当lasted为0时就不会执行if内的语句,而是执行下一轮的循环
self.prompt += str(self.lasted[index]) + self.unit[index] # 运行时间+单位
# 实现计时器对象相减
def __sub__(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
# Test the timer
t1 = Mytimer()
t1.start()
t.sleep(2) # 模拟经过了一些时间(2秒)
t1.stop()
print(t1)
输出结果为:
要等待两秒才能运行出来结果。
这个代码定义了一个名为 Mytimer
的类,它实现了一个简单的计时器功能。主要作用是在你需要测量代码的执行时间时,可以使用这个计时器来帮助你获得代码的运行时间。
这个计时器类具有以下功能:
start()
方法:开始计时。调用这个方法会记录当前时间作为计时的起始时间点。stop()
方法:停止计时。调用这个方法会记录当前时间作为计时的结束时间点,并计算经过的时间。__str__()
方法:用于将计时器的结果以字符串的形式输出。在计时器停止后,调用这个方法可以得到经过的时间。__add__()
方法:实现了计时器对象之间的加法运算。可以将两个计时器对象相加,得到它们的累计运行时间。__sub__()
方法:实现了计时器对象之间的减法运算。可以将一个计时器对象减去另一个计时器对象,得到它们之间的时间差。
使用这个计时器的基本步骤如下:
- 创建一个
Mtimer
对象:t1 = Mytimer()
- 开始计时:
t1.start()
- 停止计时:
t1.stop()
- 输出计时结果:
print(t1)
通过这个计时器,你可以方便地获得代码执行的时间,并对代码性能进行分析和优化。