|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 selene 于 2018-6-5 13:50 编辑
先上题目,如下:
小甲鱼的答案代码如下:
我的问题是:
在视频教学中,题目简单,是用字典做的,每个key对应value值。
之后,课后题难度增加,需要丰富删除、修改等操作。我认为,小甲鱼为了避免删除某个值之后,计数器的混乱,在这道题中,运用了继承列表的方法,CountList是一个列表类,其值是原先字典的keys,在这个类中,新建有一个列表count,用来存放原先字典的values。CountList和count当下的key是同步的。
然后,在写CountList的时候,由于重写了很对父类list的方法,需要调用super函数来继承。不知道我上述的理解对不对呢?但凡有错误,请大神们给我指出,谢谢。
- class CountList(list):
- def __init__(self, *args):
- super().__init__(args)
- self.count = []
- for i in args:
- self.count.append(0)
- def __len__(self):
- return len(self.count)
- def __getitem__(self, key):
- self.count[key] += 1
- return super().__getitem__(key)
- def __setitem__(self, key, value):
- self.count[key] += 1
- super().__setitem__(key, value)
- def __delitem__(self, key):
- del self.count[key]
- super().__delitem__(key)
- def counter(self, key):
- return self.count[key]
- def append(self, value):
- self.count.append(0)
- super().append(value)
- def pop(self, key=-1):
- del self.count[key]
- return super().pop(key)
- def remove(self, value):
- key = super().index(value)
- del self.count[key]
- super().remove(value)
- def insert(self, key, value):
- self.count.insert(key, 0)
- super().insert(key, value)
- def clear(self):
- self.count.clear()
- super().clear()
- def reverse(self):
- self.count.reverse()
- super().reverse()
复制代码
首先,好像并没有规定重写了以后必须要用super() 方法,使用super()方法的一种意义是防止多重调用,以及保证父类在修改后不需要重新修改子类。 这个具体感悟还是需要自己用代码做实验
不过其实一般开发情节不会出现这样的,甚至开发的时候使用类的情况都不多,更何况继承类。
如果我的回答有帮助,请设置为最佳答案,谢谢
|
|