属性极其应用(分页显示)
属性极其应用(分页显示)
- 定义:
- @property装饰器
- 只有一个self参数
- 执行:
- 对象.方法 ,不用加括号
分页显示
#**传统代码**
def func():
'''
主函数
:return:
'''
num = int(input("请输入要浏览的页码:"))#大于0切合法
star_info = (num-1)*10
end_info = num * 10
with open("shops",'r',encoding = 'utf-8') as f:
a = f.readline()
lis = []
count = 0
for line in f:
count += 1
if count >= star_info:
lis.append(line)
if count >= end_info:
break
print("第%s页的内容为"%(num),lis)
func()
#**面向对象的代码**
class Page:
def __init__(self,total_count,current_page,per_page_count = 10):
self.total_count = total_count
self.per_page_count = per_page_count
self.current_page = current_page
@property #属性的体现
def start_index(self):
return (self.current_page - 1)*self.per_page_count
@property #属性的体现
def end_index(self):
return self.current_page*self.per_page_count
USER_LIST = []
for i in range(321):
USER_LIST.append("yang-%s"%(i,))
#请实现分页显示
current_page = int(input("请输入要查看的页码:"))
P = Page(321,current_page) #还得手动计算总页码
data_list = USER_LIST[P.start_index:P.end_index]#因为加了属性的装饰器所以start_index()、start_index()后的括号可以去掉
for item in data_list:
print(item)
'''
思考:
与传统的分页读取相比
其可用性更强。
那么何时要用到类呢?
我认为是在单一函数无法或者很难去解决一个问题时,
需要多个函数,而这些函数类型相似或者需要共用一个或几个参数时
可以考虑用类将函数分类。
'''
记录学习的点点滴滴