代码:
class List1(list):
def __init__(self,value=None):
self.list1=value
self.count=[]
for each in self.list1:
self.count.append(0)
def __len__(self):
return len(self.list1)
def __getitem__(self,keys):
self.count[keys]+=1
return super().__getitem__(keys)
def __setitem__(self,keys,setvalue):
self.list1.insert(keys,setvalue)
self.count.insert(keys,0)
print("将%s加到列表%s处" % (setvalue,keys))
输出
是一个空列表
但是如果没有设置父类是list
class List1:
def __init__(self,value=None):
self.list1=value
self.count=[]
for each in self.list1:
self.count.append(0)
def __len__(self):
return len(self.list1)
def __getitem__(self,keys):
self.count[keys]+=1
return self.list1[keys]
def __setitem__(self,keys,setvalue):
self.list1.insert(keys,setvalue)
self.count.insert(keys,0)
print("将%s加到列表%s处" % (setvalue,keys))
输出
输出的结果就不是一个空列表了
这是为什么啊
第一个继承了List,你写的没能把list的某些属性覆盖掉,具体list自身的魔法方法我不是很清楚,按你第一种,a=List1([1,2,3,4]), [1,2,3,4]被赋值给了self.list1,但是__getitem__get的是list下的而不是你写的部分,问题出在这里,具体list的魔法方法我没找到