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