如何让del工作为我自己的类

时间:2015-04-20 17:42:10

标签: python python-3.x

我可以使用del从列表中删除切片。例如

a = [1, 2, 3, 4, 5, 6, 7]
del a[0:4:2]
print(a)

输出

[2, 4, 5, 6, 7]

我的问题是这里有a调用什么方法,我需要做些什么才能使del a[0:4:2]适用于自定义类的对象?

我试过了:

class Spam:
    def __delslice__(self, i, j):
        print('Slice deleted')

a = Spam()
del a[1:3]

但这给了我错误消息TypeError: 'Spam' object does not support item deletion。在任何情况下,__delslice__只有两个参数(除self之外),而del a[0:4:2]这样的调用需要3才有意义。

我也试过这个:

class Spam:
def __delitem__(self, item):
    print('item deleted')

a = Spam()
del a[1:3]

并打印item deleted,而我希望它打印item deleted两次(因为切片[1:3]包含两个索引12)。

有人可以解释发生了什么吗?

0 个答案:

没有答案