human
I wrote the below code

    class only_slice(object, ):
        def __getslice__(self, i, j):
            self.res = ('get', i, j)
        def __setslice__(self, i, j, value):
            self.res = ('set', i, j, value)
        def __delslice__(self, i, j):
            self.res = ('del', i, j)
    class mixed_slice(object, ):
        def __getslice__(self, i, j):
            self.res = ('get', i, j)
        def __setslice__(self, i, j, value):
            self.res = ('set', i, j, value)
        def __delslice__(self, i, j):
            self.res = ('del', i, j)
        def __getitem__(self, index):
            raise Exception()
        def __setitem__(self, index, value):
            raise Exception()
        def __delitem__(self, index):
            raise Exception()
    for mytype in [only_slice, mixed_slice]:
        x = mytype()
        x[:]
        AreEqual(x.res, ('get', 0, sys.maxint))
        x[0:]
        AreEqual(x.res, ('get', 0, sys.maxint))
        x[1:]
        AreEqual(x.res, ('get', 1, sys.maxint))
        x[:100]
        AreEqual(x.res, ('get', 0, 100))
        x[:] = 2
        AreEqual(x.res, ('set', 0, sys.maxint, 2))
        x[0:] = 2
        AreEqual(x.res, ('set', 0, sys.maxint, 2))
        x[1:] = 2
        AreEqual(x.res, ('set', 1, sys.maxint, 2))
        x[:100] = 2
        AreEqual(x.res, ('set', 0, 100, 2))
        del x[:]
        AreEqual(x.res, ('del', 0, sys.maxint))
        del x[0:]
        AreEqual(x.res, ('del', 0, sys.maxint))
        del x[1:]
        AreEqual(x.res, ('del', 1, sys.maxint))
        del x[:100]
        AreEqual(x.res, ('del', 0, 100))

What's a good function header?
assistant
#Here's a good function header.

def test_simple_slicing():