三.类的继承
Python 的class可以允许从零开始创建一个定制类,就像文章(二)创建Athlete类一样,也可以通过继承现有的其他类类创建一个类,这也包括用List、set和dict提供的python内置结构类,通过继承创建的这些类称为子类。
(1) 原有的类
class Athlete:def __init__(self,a_name,a_dob,a_times=[]):self.name = a_nameself.dob=a_dobself.times=a_timesdef top3(self):return(sorted(set([sanitize(t) for t in self.times]))[0:3])
向类增加两个方法:add_times(),可以将额外的计时值追加到选手的计时数据,add_times()会用一个或多个计时值(列表)来扩展一个选手的计时数据
def add_times(self,time_value):self.times.append(time_value)def add_times(self,list_of_times):self.times.extend(list_of_times)
(2) 继承内置类list的类
class AthleteList(list): #提供被派生的类def __init__(self,a_name,a_dob,a_times=[]):list.__init__([]) #初始化所派生的类self.name = a_name #将参数赋予属性self.dob=a_dobself.extend(a_times) #数据本身就是计时数据,所以不再需要"times"属性def top3(self):return(sorted(set([sanitize(t) for t in self]))[0:3])
(3) 调用类
Vera = AthleteList('Vera Vi')Vera.append('1.31')Vera.extend(['2.22','1-21','2;22'])print(Vera.top3())