python 类 对象 方法 应用_Python 定制类与其对象的创建和应用

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)

>>> type(james)

>>> sarah

>>> james

>>> 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']

>>>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值