仅采用整数的约束列表

Nei*_*eil 1 python python-2.7

我正在尝试扩展列表类型以仅采用整数。我确实覆盖了appendsetitem但它不起作用。请问有什么指点吗?

class linked_list(list):

    def __init__(self):
        self.indx = 0

   def next(self):
        self.indx += 1
        return self.__getitem__(self.indx)

    def prev(self,indx):
        self.indx -= 1
        return self.__getitem__(self.indx)


    def __append__(self,val):
        if not isinstance(val,int):
            raise Exception('only integers accepted')
        super(linked_list,self).__append__(val)


    def __getitem__(self,indx):
        try:
            return super(linked_list,self).__getitem__(indx)
        except IndexError,e:
            StopIteration()

    def __setitem__(self,key,val):
        if not isinstance(val,int):
            raise Exception('only integers accepted')

        super(linked_list,self).__setitem__(key,val)
Run Code Online (Sandbox Code Playgroud)

jam*_*lak 5

不是__append__,只是append。也TypeError可能是一个更合适的例外。

def append(self,val):
    if not isinstance(val, int):
        raise TypeError('only integers accepted')
    super(linked_list,self).append(val)
Run Code Online (Sandbox Code Playgroud)

正如@TimPietzcker 指出的那样,您还应该extend适当地覆盖和其他方法