def sanitize(time_string):
if '-' in time_string:
splitter = '-'
elif ':' in time_string:
splitter = ':'
else:
return(time_string)
(mins, secs) = time_string.split(splitter)
return(mins + '.' + secs)
class Athlete:
def __init__(self, a_name, a_dob = None, a_times = []):
self.name = a_name
self.dob = a_dob
self.times = a_times
def top3(self):
return (sorted(set([sanitize(t) for t in self.times]))[0:3])
def get_coach_data(filename):
try:
with open(filename) as f:
data = f.readline()
mum = data.strip().split(',')
return (Athlete(mum.pop(0), mum.pop(0), mum))
except IOError as ioerr:
print('File error:' + str(ioerr))
return (None)
james = get_coach_data('james2.txt')
sarah = get_coach_data('sarah2.txt')
julie = get_coach_data('julie2.txt')
mikey = get_coach_data('mikey2.txt')
print(james.name + "'s fastest times are:" + str(james.top3()))
print(sarah.name + "'s fastest times are:" + str(sarah.top3()))
print(julie.name + "'s fastest times are:" + str(julie.top3()))
print(mikey.name + "'s fastest times are:" + str(mikey.top3()))
报错的部分:
return (Athlete(mum.pop(0), mum.pop(0), mum))
TypeError: object() takes no parameters从网上查到的主要结论是_init_写错,也有这位给出了别的说法。我尝试了一下,不是同样的问题。
最终发现init左右都是两条下划线,我只写了一条。宛若一个智障。