Lista encadeada em Python

Estou aproveitando o tempo livre ocasionado pelas férias na Unip para estudar um pouco mais alguns conceitos de computação. Um deles é a lista encadeada. Para quem não sabe o que é, lista encadeada é uma espécie de array, porém com a possiblidade de se adaptar ao tamanho correto automaticamente. Quem tem o interesse de aprender sobre ela recomendo esse post

Falta organizar várias coisas no código, mas o básico é isso. Neste exemplo uso a posição zero apenas para marcar a variável na memória do computador:

     class Lista():         __valor = None      __proximo = None            def __init__(self,valor = None):            self.__valor = valor            def getProximo(self):           return self.__proximo           def setProximo(self,pro):           self.__proximo = pro            def getValor(self):             return self.__valor             def adicionar(self,valor):          temporario = None           if self.__proximo == None:              self.__proximo = Lista(valor)               return None             proximo = self.__proximo            temporario = proximo            while not proximo ==  None:                 proximo = proximo.getProximo()              if not proximo == None:                     temporario = proximo            temporario.setProximo(Lista(valor))             #proximo.setProximo(ok)             def posicao(self,pos):          proximo = self.__proximo            if pos == 0:                return self.getValor()          for i in range(0,pos-1):                proximo = proximo.getProximo()          return proximo.getValor()           def remover(self,pos):          temporario = None           proximo = self.__proximo            j=0             for i in range(0,pos-2):                temporario = proximo                if i == pos - 2:                    break               proximo = proximo.getProximo()          if proximo.getProximo().getProximo() == None:               proximo.setProximo(None)            else:               proximo.setProximo(proximo.getProximo().getProximo())