三.类的继承 Python 的class可以允许从零开始创建一个定制类,就像文章(二)创建Athlete类一样,也可以通过继承现有的其他类类创建一个类,这也包括用List、set和dict提供的python内置结构类,通过继承创建的这些类称为子类。
(1) 原有的类
class Athlete: def __init__(self,a_name,a_dob,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])
向类增加两个方法: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_dob self.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())