我是python 2.7的新手,刚进入课程。我在下面的“如何像计算机科学家一样思考:用Python学习”中编写了第13.2节的代码块
当我调用print_time
函数从add_time
函数打印返回的属性时,我收到以下错误:
Traceback (most recent call last):
File "13.py", line 49, in <module>
print_time(done_time)
File "13.py", line 10, in print_time
print time.hour,':',time.minute
AttributeError: Time instance has no attribute 'hour'
这是为什么?我是否需要明确告诉python要打印done_time
类中的哪些属性?
class Time:
pass
def print_time(time):
print time.hour,':',time.minute
def time_add(t1, t2):
time_sum = Time()
time_sum.hours = t1.hour + t2.hour
time_sum.minutes = t1.minute + t2.minute
return time_sum
current_time = Time()
current_time.hour = 9
current_time.minute = 00
duration = Time()
duration.hour = 2
duration.minute = 30
done_time = time_add(current_time, duration)
print_time(done_time)
答案 0 :(得分:1)
代码的整体结构有点奇怪。我假设根据你所遵循的书,这可能是故意的,以帮助教授在未来的道路上正确设计这个代码?无论哪种方式,问题实际上都是因为您混合了hour
和hours
属性(minute
和minutes
也是如此)。我不确定这是你自己创建的代码,但是,从这里开始:
done_time = time_add(current_time, duration)
正在发生的事情是,您的time_add
功能正在返回包含Time
和hours
属性的minutes
对象。
您可以执行以下操作:
print_time(done_time)
其中,将您带到print_time
功能,然后尝试引用hour
和minute
属性,您在done_time
和hours
属性中明显没有这个属性{1}}。根据您之前的功能,您已按照说明分配了minutes
和print_time
。要立即解决您的问题,您的hours
应该引用minutes
和def print_time(time):
print time.hours,':',time.minutes
:
nobel_winners = [
{'category': 'Physics',
'name': 'Albert Einstein',
'nationality': 'Swiss',
'sex': 'male',
'year': 1921},
{'category': 'Physics',
'name': 'Paul Dirac',
'nationality': 'British',
'sex': 'male',
'year': 1933},
{'category': 'Chemistry',
'name': 'Marie Curie',
'nationality': 'Polish',
'sex': 'female',
'year': 1911}
]