您的位置:首页 > 移动开发 > Objective-C

AttributeError: 'tuple' object has no attribute 'Multi'

2014-02-11 00:24 716 查看
题目:If I leave my house at 6:52 am and run 1 mile at an easy pace (8:15 per mile), then 3 miles attempo (7:12 per mile) and 1 mile at easy pace again, what time do I get home for breakfast?代码第一版是这样的。
#!/user/bin/python
#encoding=utf-8
#Filename:EX_Chapter3_NO3.py
class myTime:
def __init__ (self,hour,minute,second):
self.hour=hour
self.minute=minute
self.second=second
#两个时间对象相同
def addObjTime (self,intime):
self.hour+=intime.hour
self.minute+=intime.minute
self.second+=intime.second
#一个时间对象乘以倍数
def  Multi(self,intimes):
self.hour=self.hour*intimes
self.minute=self.minute*intimes
self.second*=intimes
beginTime=myTime(6,52,0)
easyTime=(0,8,15)
tempo=(0,7,12)
beginTime=beginTime.addObjTime(easyTime.Multi(1))
beginTime=beginTime.addObjTime(tempo.Multi(3))
beginTime=beginTime.addObjTime(easyTime.Multi(1))
结果却报了这样的错:---------- Python27 ----------Traceback (most recent call last):File "EX_Chapter3_NO3.py", line 22, in <module>beginTime=beginTime.addObjTime(easyTime.Multi(1))AttributeError: 'tuple' object has no attribute 'Multi'输出完成 (耗时 0 秒) - 正常终止既然这样,问题出在哪里呢,看
easyTime=(0,8,15)
tempo=(0,7,12)
可以知道,我的本意是要创建一个时间对象的,结果却创建了一个tuple对象。这就是问题所在了。找到了问题,改掉他。源代码为:
#!/user/bin/python
#encoding=utf-8
#Filename:EX_Chapter3_NO3.py
class myTime:
def __init__ (self,hour,minute,second):
self.hour=hour
self.minute=minute
self.second=second
#两个时间对象相同
def addObjTime (self,intime):
self.hour+=intime.hour
self.minute+=intime.minute
self.second+=intime.second
#一个时间对象乘以倍数
def  Multi(self,intimes):
self.hour=self.hour*intimes
self.minute=self.minute*intimes
self.second*=intimes
beginTime=myTime(6,52,0)
easyTime=myTime(0,8,15)
tempo=myTime(0,7,12)
beginTime=beginTime.addObjTime(easyTime.Multi(1))
beginTime=beginTime.addObjTime(tempo.Multi(3))
beginTime=beginTime.addObjTime(easyTime.Multi(1))
可以看到,修改完成,但是运行还是报错啊。错误描述如下:---------- Python27 ----------Traceback (most recent call last):File "EX_Chapter3_NO3.py", line 22, in <module>beginTime=beginTime.addObjTime(easyTime.Multi(1))File "EX_Chapter3_NO3.py", line 11, in addObjTimeself.hour+=intime.hourAttributeError: 'NoneType' object has no attribute 'hour'输出完成 (耗时 0 秒) - 正常终止是返回值的问题。现在修改成如下
#!/user/bin/python
#encoding=utf-8
#Filename:EX_Chapter3_NO3.py
class myTime:
def __init__ (self,hour,minute,second):
self.hour=hour
self.minute=minute
self.second=second
#两个时间对象相同
def addObjTime (self,intime):
self.hour+=intime.hour
self.minute+=intime.minute
self.second+=intime.second
return self
#一个时间对象乘以倍数
def  Multi(self,intimes):
self.hour=self.hour*intimes
self.minute=self.minute*intimes
self.second*=intimes
self=adjsttime(self)
return self
#使规范化
def adjusttime (self):
upminute=self.second/60
self.second=self.second%60
self.minute+=upminute
upHour=self.minute/60
self.minute=self.minute%60
self.hour=(self.hour+upHour)%24
return self

def showtime (self):
print "%d时%d分%d秒"%(self.hour,self.minute,self.second)

beginTime=myTime(6,52,0)
easyTime=myTime(0,8,15)
tempo=myTime(0,7,12)
beginTime=beginTime.addObjTime(easyTime.Multi(1))
beginTime=beginTime.addObjTime(tempo.Multi(3))
beginTime=beginTime.addObjTime(easyTime.Multi(1))
但是还是有问题的。adjusttime(self)应该改为self.adjusttime()艹了,python这点太反人类了,艹了。最后源代码是
#!/user/bin/python#encoding=utf-8#Filename:EX_Chapter3_NO3.pyclass myTime:def __init__ (self,hour,minute,second):self.hour=hourself.minute=minuteself.second=second#两个时间对象相同def addObjTime (self,intime):self.hour+=intime.hourself.minute+=intime.minuteself.second+=intime.secondself=self.adjusttime()return self#一个时间对象乘以倍数def  Multi(self,intimes):self.hour=self.hour*intimesself.minute=self.minute*intimesself.second*=intimesself=self.adjusttime()return self#使规范化def adjusttime(self):upminute=self.second/60self.second=self.second%60self.minute+=upminuteupHour=self.minute/60self.minute=self.minute%60self.hour=(self.hour+upHour)%24return selfdef showtime (self):print "%d时%d分%d秒"%(self.hour,self.minute,self.second)beginTime=myTime(6,52,0)easyTime=myTime(0,8,15)tempo=myTime(0,7,12)beginTime=beginTime.addObjTime(easyTime.Multi(1))beginTime=beginTime.addObjTime(tempo.Multi(3))beginTime=beginTime.addObjTime(easyTime.Multi(1))beginTime.showtime()
显示的结果为---------- Python27 ----------7时30分6秒输出完成 (耗时 0 秒) - 正常终止
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: