1.创建新类Athlete,创建两个唯一的对象实例sarah james,他们会继承Athlete类的特性
>>> class Athlete: def __init__(self,a_name,a_dob=None,a_times=[]): self.name=a_name self.dob=a_dob self.times=a_times >>> sarah=Athlete(‘Sarah Sweeney‘,‘2002-07-02‘,[‘2:58‘,‘2.34‘,‘1.56‘]) >>> james=Athlete(‘James Jone‘) >>> type(sarah) <class ‘__main__.Athlete‘> >>> type(james) <class ‘__main__.Athlete‘> >>> sarah <__main__.Athlete object at 0x02DAB970> >>> james <__main__.Athlete object at 0x02A29990> >>> sarah.name ‘Sarah Sweeney‘ >>> james.name ‘James Jone‘ >>> sarah.dob ‘2002-07-02‘ >>> james.dob >>> sarah.times [‘2:58‘, ‘2.34‘, ‘1.56‘] >>> james.times [] >>>
2. 类及其对象的应用:senitize不变,定义类Athlete和两个子方法__init__与top3。通过get_coach_data函数进行调用
def senitize(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([senitize(t) for t in self.times]))[0:3]) def get_coach_data(filename): try: with open(filename) as f: data=f.readline() user=data.strip().split(‘,‘) userob=Athlete(user.pop(0),user.pop(0),user) print(userob.name+"‘s fastest times are:" + str(userob.top3())) except IOError as ioerr: print(‘File error‘ +str (ioerr)) return (None) get_coach_data(‘sarah2.txt‘) get_coach_data(‘james2.txt‘) get_coach_data(‘mikey2.txt‘) get_coach_data(‘julie2.txt‘) ========== RESTART: C:/Users/eric/Documents/Python/kelly/kelly2.py ========== Sarah Sweeney‘s fastest times are:[‘2.18‘, ‘2.21‘, ‘2.22‘] James Lee‘s fastest times are:[‘2.01‘, ‘2.16‘, ‘2.22‘] Mikey McManus‘s fastest times are:[‘2.22‘, ‘2.31‘, ‘2.38‘] Julie Jones‘s fastest times are:[‘2.11‘, ‘2.23‘, ‘2.59‘]
3.添加2个新的方法给Athlete类,并调用测试
def senitize(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([senitize(t) for t in self.times]))[0:3]) def add_time(self,time_value): self.times.append(time_value) def add_times(self,list_of_times): self.times.extend(list_of_times) vera=Athlete(‘VeraName‘) vera.add_time(‘1.31‘) print(‘Object name is:‘, vera.name) print(vera.name+"‘s top3 is: " + str(vera.top3())) vera.add_times([‘2.12‘,‘3.44‘,‘3.33‘]) print(vera.name+"‘s top3 is: " + str(vera.top3())) ========== RESTART: C:/Users/eric/Documents/Python/kelly/kelly3.py ========== Object name is: VeraName VeraName‘s top3 is: [‘1.31‘] VeraName‘s top3 is: [‘1.31‘, ‘2.12‘, ‘3.33‘] >>>
时间: 2024-10-14 21:25:54