马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
class Countlist(list):
def __init__(self, *args):
super().__init__(args) # 调用基类的__init__方法
self.count = [] # 赋值一个空列表
for i in args: # 为每一个args 设置一个对应的 计数器,初始值均为0,self.count的长度即为*args的长度
self.count.append(0) # 初始值为0
def __len__(self):
return len(self.count) # 返回计数器的长度
def __getitem__(self, key): # 访问
self.count[key] += 1 # 每获取一次值,对应的计数器加1,只有在访问时才会增加
return super().__getitem__(key) # 调用基类的__getitem__方法
def __setitem__(self, key, value): # 赋值
self.count[key] = value # 为计数器重新赋值
return super().__setitem__(key, value) # 调用基类的赋值方法
def __delitem__(self, key): # 删除
del self.count[key] # 对应的计数端也会被删除
return super().__delitem__(key) # 调用基类的删除方法
def counter(self, key): # 增加 counter(index)方法,返回 index参数所指定的元素记录的访问次数
return self.count[key] # 返回的是对应值的计数器次数,计数器是跟随value 而不是index
def append(self, value): # 添加
self.count.append(0) # 在添加列表时,同时添加一个计数器
super().append(value) # 返回基类的append方法
def pop(self, key=-1): # 弹出
del self.count[key] # 删除对应位置的计数器, 默认值为最后一个(-1)
return super().pop(key) # 调用基类的pop方法
def remove(self, value): # 移除value,
key = super().index(value) # 调用基类的index, 返回值key是value在序列中的位置
del self.count[key] # 删除对应位置的计数器
super().remove(value) # 调用基类的移除方法
def insert(self, key, value): # 插入 value
self.count.insert(key, 0) # 在插入value时,在相同的位置插入计数器,初始值为0
super().insert(key, value) # 调用基类的insert方法
def clear(self): # 清除列表
self.count.clear() # 同样清除计数器
super().clear() # 调用基类的clear方法
def reverse(self): # 反转列表
self.count.reverse() # 同样反转计数器
super().reverse() #调用基类的reverse方法
想请教,这里为什么要调用基类的方法
|