Clase de paginación con POO

Tu tarea es crear una class para gestionar contenido paginado en un sitio web. La paginación se usa para dividir listas largas de contenido en una serie de páginas.

Example

La class de paginación aceptará 2 parámetros:

  1. items (predeterminado: []): Una list de contenidos para paginar.

  2. pageSize (predeterminado: 10): La cantidad de elementos que se mostrarán en cada página.

Así, por ejemplo, podríamos inicializar nuestra paginación de esta manera:

alphabetList = "abcdefghijklmnopqrstuvwxyz".split('')

p = Pagination(alphabetList, 4)

Después, usa el método getVisibleItems para mostrar el contenido de la lista paginada.

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

Deberás implementar varios métodos para recorrer las páginas, como los siguientes:

  • prevPage
  • nextPage
  • firstPage
  • lastPage
  • goToPage

Esta es una continuación del ejemplo anterior usando nextPage y lastPage:

p.nextPage()

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

p.lastPage()

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

Notas

  • El segundo argumento (pageSize) podría ser un float; en ese caso, simplemente conviértelo en un int (esto también aplica al método goToPage).
  • Los métodos que se usan para cambiar de página deben permitir encadenamiento, para que puedas llamarlos uno tras otro así: p.nextPage().nextPage()
  • Configura los atributos p.totalPages y p.currentPage con el número correspondiente, ya que no puede existir una página 0.
  • Si una página está fuera del atributo totalPages, entonces el método goToPage debe ir a la página más cercana al número proporcionado (por ejemplo, solo hay 5 páginas en total, pero se proporciona p.goToPage(10): p.currentPage debe establecerse en 5; si se proporciona 0 o un número negativo, p.currentPage debe establecerse en 1).
  • Elimina los comentarios que proporcioné antes de publicar tu solución.