目标
希望自己实现的类能够复用list,并添加其他成员。
现象
上代码
从上面结果可以看到,Trace类(L54)继承了list,并且(不小心)把index方法变成了dict型成员。Trace类对象能够正常使用list类的对象方法(例如append - L56)。然而,当我需要截断这个list时(L63),本来还是Trace类的对象a(L62),在经过截断(L63)之后,竟然直接变成了list类的对象(L65)。【一脸懵逼】
为什么会有这种现象
大佬来给解释下呗。。。时间关系,简单搜了下,并没有在stackoverflow上看到类似问题。
个人猜测由于L63用到的方法并不是list类给出的方法,有可能导致python误认为它就是list类的对象。类似的现象还有
a = Trace()
a == []
实际会返回True。(Trace类定义同上节)
解决方法
我的需求是做截断,那就把后面不需要的东西pop出去。假设截断语句为a = a[0, x+1]
即从x元素开始都需要舍弃,所以代码可以为
for i in range( len(a) - x - 1 )
a.pop()
note : 上述例子中x>0