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 秒) - 正常终止
相关文章推荐
- OOP(Object Oriented Progamming )面向对象的程序设计
- Flex动态获取Object的属性和值以及完成Object之间value的拷贝
- Learn Objective-C: Day 2
- (Object-C)协议和代理
- (Object-c)分类和类的拓展
- sys.sysobjects (Transact-SQL)的学习
- (object-c)枚举类
- 利用KVC和associative特性在NSObject中存储键值(提示undefinedkey)
- Objective-C的动态特性
- Object-c中的基本数据类型
- Objective-Cloud将Objective-C搬到了云端
- (object-c)属性的使用
- VC6.0下加载ActiveMovieControl Object
- “Word.Tables”并不包含“Item”的定义的解决办法
- Objective-C 面向对象(isa)
- 类的实现(Object-c)
- Objective-C的hook方案: Method Swizzling
- [ios开发学习]2.object-c基本类…
- QWT错误static struct QMetaObject const QwtPlot
- objective-c 中随机数的用法 (3种:arc4random() 、random()、CCRANDOM_0_1() )