首页 > 编程语言 >[python][代码]Python分页工具类

[python][代码]Python分页工具类

时间:2024-08-04 21:54:22浏览次数:14  
标签:index 分页 python self list Python data page size

这段Python代码定义了一个名为 Pagination 的类,用于实现数据的分页功能。下面是代码的逐行解释:

  1. # encoding: utf-8:指定文件的编码格式为UTF-8。
  2. import math:导入Python的数学模块,用于访问数学函数和常量。
  3. 定义了 Pagination 类,它继承自 object(在Python 3中,所有类都隐式地继承自 object,所以这里的 (object) 是可选的)。
  4. 定义了 Pagination 类的构造函数 __init__,它接受三个参数:data_list(数据列表),page_index(当前要查看的列表页),page_size(每页默认显示几条数据)。
  5. 在构造函数中,将传入的参数赋值给类的属性。
  6. 定义了 start 属性,使用 @property 装饰器,表示当前页的起始索引。
  7. 定义了 end 属性,使用 @property 装饰器,表示当前页的结束索引。
  8. 定义了 page_num 属性,使用 @property 装饰器,计算总页数。使用 math.ceil 函数向上取整,确保即使最后一页的数据不足 page_size 也能显示。
  9. 定义了 show 方法,用于根据当前的 page_indexpage_sizedata_list 中切片获取当前页的数据。
  10. show 方法中,首先尝试获取当前页的数据。
  11. 如果获取的数据不为空,并且当前页码小于或等于总页数,则返回当前页的数据和页码。
  12. 如果获取的数据为空或者当前页码超出了总页数,将 page_index 重置为1,然后再次尝试获取第一页的数据。
# encoding: utf-8

import math

class Pagination(object):

    def __init__(self, data_list, page_index, page_size):
        """
        初始化分页数据
        :param data_list: 数据列表
        :param page_index: 当前要查看的列表页
        :param page_size: 每页默认显式几条数据
        """
        self.data_list = data_list
        self.page_index = page_index
        self.page_size = page_size

    @property
    def start(self):
        return (self.page_index) * self.page_size

    @property
    def end(self):
        return (self.page_index+1) * self.page_size

    @property
    def page_num(self):
        return math.ceil(len(self.data_list) / self.page_size)

    def show(self):
        """ 切片展示数据 """
        result = self.data_list[self.start:self.end]
        if result and self.page_index <= self.page_num:  # 正常分页
            return result, self.page_index
        else:
            self.page_index = 1
            result = self.data_list[self.start:self.end]
            return result

标签:index,分页,python,self,list,Python,data,page,size
From: https://blog.csdn.net/awonw/article/details/140912767

相关文章

  • 【自动化测试必学语言】python:面向对象
    目录面向对象基本介绍类和对象类的组成类的抽象(类的设计)面向代码的步骤面向对象基本代码的书写self的说明对象的属性操作添加属性获取属性魔法方法__init__方法**__str__方法*__del__方法 【了解】案例封装案例案例二私有和公有案例继承语法案例......
  • Selenium + Python 自动化测试03(元素定位)
        上一篇我们讲述了第一个测试用例脚本的编写。我们对web自动化测试有了一个初步的认识。接着我们详细讲述元素定位方法。        Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素才能进行后续的自动化控......
  • Python pymodbus类库使用学习总结
    实践环境Python3.9.13https://www.python.org/ftp/python/3.9.13/python-3.9.13-amd64.exepymodbus-3.6.8-py3-none-any.whlhttps://files.pythonhosted.org/packages/35/19/a9d16f74548d6750acf6604fa74c2cd165b5bc955fe021bf5e1fa04acf14/pymodbus-3.6.8-py3-none-any.whl......
  • 【秋招笔试】2024-08-03-科大讯飞秋招笔试题(算法岗)-三语言题解(CPP/Python/Java)
    ......
  • Python 爬虫项目实战(一):破解网易云 VIP 免费下载付费歌曲
    前言网络爬虫(WebCrawler),也称为网页蜘蛛(WebSpider)或网页机器人(WebBot),是一种按照既定规则自动浏览网络并提取信息的程序。爬虫的主要用途包括数据采集、网络索引、内容抓取等。爬虫的基本原理种子URL:爬虫从一个或多个种子URL开始,这些URL是起点。发送请求:爬虫向这些种......
  • python常用绘图操作
    1.turtle绘制奥运五环图importturtleaspdefdrawCircle(x,y,c='red'):p.pu()#抬起画笔p.goto(x,y)#绘制圆的起始位置p.pd()#放下画笔p.color(c)#绘制c色圆环p.circle(30,360)#绘制圆:半径,角度p.pensize(3)#画笔尺寸设置3drawCircle(0,0,'b......
  • 【学习笔记】Matlab和python双语言的学习(蒙特卡洛法)
    文章目录前言一、蒙特卡洛二、经典示例:计算圆周率π1.代码实现----Matlab2.代码实现----python三、示例2:三门问题1.代码实现----Matlab2.代码实现----python总结前言通过模型算法,熟练对Matlab和python的应用。学习视频链接:https://www.bilibili.com/video/BV1E......
  • python-查找元素3(赛氪OJ)
    [题目描述]有n个不同的数,从小到大排成一列。现在告诉你其中的一个数x,x不一定是原先数列中的数。你需要输出最后一个<=x的数在此数组中的下标。输入:输入共两行第一行为两个整数n、x。第二行为n个整数,代表a[i]。输出:请你输出最后一个<=x的数在此数组中的下标。样例输入1541......
  • Python3 第六十一课 -- 实例三十
    目录一.堆排序二.计数排序一.堆排序堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。defheap......
  • Python3 第六十课 -- 实例二十九
    目录一.冒泡排序二.归并排序一.冒泡排序冒泡排序(BubbleSort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名......