|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
希望达到的效果是这样的:
>>> t1=Mytimer()
>>> t1.start()
计时开始
>>> t1.stop()
计时结束
>>> print(t1)
000001
#当直接用print(t1)时,能返回间隔时间
这是能返回上述理想效果的代码:
import time as t
class Mytimer():
def __str__(self):
self._calc()
return self.interval
def start(self):
self.time_start=t.localtime()
print('计时开始')
def stop(self):
self.time_stop=t.localtime()
self._calc()
print('计时结束')
def _calc(self):
self.interval=''
time_lasted=[]
for index in range (6):
time_lasted.append(self.time_stop[index]-self.time_start[index])
self.interval+=str(time_lasted[index])
但如果是这种方式就会报错(加粗的为与上述不同的地方):
import time as t
class Mytimer():
def __str__(self):
self._calc()
def start(self):
self.time_start=t.localtime()
print('计时开始')
def stop(self):
self.time_stop=t.localtime()
self._calc()
print('计时结束')
def _calc(self):
self.interval=''
time_lasted=[]
for i in range (6):
time_lasted.append(self.time_stop-self.time_start)
self.interval+=str(time_lasted)
print('一共经历了%s秒'%(self.interval))
错误是:
>>> t1=Mytimer()
>>> t1.start()
计时开始
>>> t1.stop()
一共经历了000001秒
计时结束
>>> print(t1)
一共经历了000001秒
Traceback (most recent call last):
File "<pyshell#31>", line 1, in <module>
print(t1)
TypeError: __str__ returned non-string (type NoneType)
问题:为什么在__str__里面 运行print会出错呢?运行print不是得到是字符串吗?为什么说返回的不是字符串
因为print(t1),print函数的参数必须得是字符串类型的,所以被调用的函数一定要返回一个字符串类型的数据才可以打印出来。
|
|