|
发表于 2017-6-24 15:52:40
From FishC Mobile
|
显示全部楼层
|阅读模式
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
例子如下:
假设田径队100米训练后,我们需要存储一组数据来记录各个运动员的成绩,分别要储存运动员的
姓名,出生日期和每次100米的成绩。可以有多种方式储存,直接存在list或dictionary里都行。这里我
们使用自己定义的存储方式AthleteList方式储存。用字符串储存运动员的姓名和出生日期,用list来储
存各次100米成绩。
class AthleteList(list):
def __init__(self, a_name, a_dob=None, a_time=[]):
list.__init__([])
self.name=a_name
self.dob=a_dob
self.extend(a_time)
在自己的类名后加入(list)以表示继承list类。__init__函数中,第一个参数永远是self。接下来,调用lis
的构造函数,list.__init__([]), 注意此时参数填入[]。剩下就是给类的成员赋值了。本类的对象本身就
是list,直接储存了百米成绩,所以查看成绩是可直接调用类名。
在shell中演示如何使用这个类。
>>> a=AthleteList('James', '1992', ["14'2''","13'33''"])
此语句执行时,实际执行的是
a=AthleteList.__init__(a, 'James', '1992', ["14'2''","13'33''"])
>>> a
["14'2''", "13'33''"]
>>> print(a)
["14'2''", "13'33''"]
>>> for each in a:
print(each)
14'2''
13'33''
由于继承了list,类AthleteList兼有了list的属性,调用方法时可当做list对象调用,所以调用a和调用
a.time 都能得到记录时间的列表。
>>> a.name
'James'
>>> a.dob
'1992'
调用成员得到姓名和出生年月的信息。
接下来试试list中原有的方法调用。
>>> a.append('99')
>>> a
["14'2''", "13'33''", '99']
>>> a.insert(1,'5553')
>>> a
["14'2''", '5553', "13'33''", '99']
问题如下:
为什么说:“本类的对象本身就
是list,直接储存了百米成绩,所以查看成绩是可直接调用类名。”
为什么类本身是list,所以就直接存储了成绩呢?类中的名字和生日呢?
编程新手(_),求助!! |
|