Python 2.7 继承 list 怪象

目标

希望自己实现的类能够复用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值