课后题求助 :第047讲:魔法方法:定制序列
第47讲:魔法方法:定制序列 第0题求助:该题目是要实现一个可修改的能够记录元素访问次数的序列
我的代码中用字典来记录元素访问次数{key = 序列中的元素值 : value = 访问次数}
现在有一个问题: del 一个元素的时候, 只能删除掉序列中的元素值,但是删除不掉counts字典里的键值对,如下图:
请问各位大神帮忙看一下 有哪些问题
代码如下:
class CountList(list):
def __init__(self, *args):
super().__init__(args)
self.counts = {}.fromkeys(self, 0)
def __len__(self):
return len(self.counts)
def __getitem__(self, item):
temp = super().__getitem__(item)
self.counts += 1
return temp
def __setitem__(self, key, value):
if key in self.counts:
self.counts += 1
else:
self.append(value)
super().__setitem__(key, value)
def __delete__(self, instance):
self.counts.pop(super().__getitem__(instance))
super().__delitem__(instance)
def append(self, value):
self.counts = 0
super().append(value) class CountList(list):
def __init__(self, *args):
super().__init__(args)
self.counts = {}.fromkeys(self, 0)
def __len__(self):
return len(self.counts)
def __getitem__(self, item):
temp = super().__getitem__(item)
self.counts += 1
return temp
def __setitem__(self, key, value):
if key in self.counts:
self.counts += 1
else:
self.append(value)
super().__setitem__(key, value)
def __delitem__(self, instance): # 你的问题出现在这里(用 __delitem__)
self.counts.pop(super().__getitem__(instance))
super().__delitem__(instance)
def append(self, value):
self.counts = 0
super().append(value)
c = CountList(1, 2, 3, 4, 5)
del c
print(c.counts)
print(c){1: 0, 2: 0, 3: 0, 5: 0}
傻眼貓咪 发表于 2021-10-2 09:35
感谢大佬!
页:
[1]