Classe de paginação com POO

Sua tarefa é criar uma class para lidar com conteúdo paginado em um site. A paginação é usada para dividir listas longas de conteúdo em uma série de páginas.

Example

A class de paginação aceitará 2 parâmetros:

  1. items (padrão: []): Uma list de conteúdos para paginar.

  2. pageSize (padrão: 10): A quantidade de itens a serem exibidos em cada página.

Por exemplo, poderíamos inicializar nossa paginação desta forma:

alphabetList = "abcdefghijklmnopqrstuvwxyz".split('')

p = Pagination(alphabetList, 4)

Em seguida, use o método getVisibleItems para exibir o conteúdo da lista paginada.

p.getVisibleItems() # ["a", "b", "c", "d"]

Você deverá implementar vários métodos para percorrer as páginas, como:

  • prevPage
  • nextPage
  • firstPage
  • lastPage
  • goToPage

Veja a continuação do exemplo acima usando nextPage e lastPage:

p.nextPage()

p.getVisibleItems()
# ["e", "f", "g", "h"]

p.lastPage()

p.getVisibleItems()
# ["y", "z"]

Observações

  • O segundo argumento (pageSize) pode ser um float; nesse caso, basta convertê-lo para um int (isso também se aplica ao método goToPage).
  • Os métodos usados para mudar de página devem permitir encadeamento, para que você possa chamá-los um após o outro assim: p.nextPage().nextPage()
  • Defina os atributos p.totalPages e p.currentPage com o número apropriado, pois não pode existir uma página 0.
  • Se uma página estiver fora do atributo totalPages, o método goToPage deverá ir para a página mais próxima do número fornecido (por exemplo, há apenas 5 páginas no total, mas p.goToPage(10) é fornecido: p.currentPage deve ser definido como 5; se 0 ou um número negativo for fornecido, p.currentPage deve ser definido como 1).
  • Remova os comentários que forneci antes de publicar sua solução.