我们将创建一个简单的Python案例,使用面向对象编程和分模块组织代码。
结合函数、面向对象编程和分页设计的Python案例,包含主文件和其他模块文件。
project/
├── main.py # 主程序
├── models.py # 数据模型
├── pagination.py # 分页功能
└── utils.py # 工具函数
classProduct: def __init__(self, id, name, price): self.id = id self.name = name self.price = price def display(self): return f"{self.id}:{self.name} - ${self.price:2f}"class ProductInventory: def __init__(self): self.products = [] def add_product(self, product): self.products.append(product) def get_all_products(self): return self.products
classPaginator: def __init__(self, items, per_page=5): self.items = items self.per_page = per_page self.total_pages = (len(items) + per_page - 1) // per_page def get_page(self, page_num): if page_num < 1or page_num > self.total_pages: return [] start = (page_num - 1) * self.per_page end = start + self.per_page return self.items[start:end] def display_page_info(self, page_num): return f"Page {page_num}/{self.total_pages} | Items: {len(self.get_page(page_num))}/{len(self,items)}"
def generate_sample_products(sount=23): """ 生成示例产品数据 """ from models import Product return [Product(i, f"Product{i}",10.99 + i)for i in range(1, sount+1)]def display_menu(): """ 显示主菜单 """ print("\n=== Product Inventory System ===") print("1. View products") print("2. Exit") returninput("Enter your choice:")
from models import ProductInventoryfrom pagination import Paginatorfrom utils import generate_sample_products, display_menudef main(): # 初始化库存 inventory = ProductInventory() for product in generate_sample_products(): inventory.add_product(product) # 创建分页器 paginator = Paginator(inventory.get_all_products()) current_page = 1 while True: choice = display_menu() if choice == '1': # 显示当前页产品 print(f"\n{'-'*30}") print(paginator.display_page_info(current_page)) print("-"*30) for product in paginator.get_page(current_page): print(product.display()) # 分页导航 print("\n[N]ext page | [P]revious page | [M]enu") nav = input("Choose action:").lower() if nav == 'n'and current_page < paginator.total_pages: current_page += 1 elif nav == 'p'and current_page > 1: current_page -= 1 elif choice == '2': print("Exiting program...") break else: print("Invalid choice. Please try again.")if __name__ == "__main__": main()
(1)面向对象编程:
Product类表示单个产品
ProductInventory类管理产品集合
Paginator类实现分页逻辑
(2)函数封装:
generate_sample_products()生成测试数据
display_menu()显示用户界面
main()函数组织主流程
(3)分页功能:
每页显示5个产品
支持前后翻页导航
显示当前页码和总数
(4)模块化设计:
主程序:main.py
数据模型:models.py
分页逻辑:pagination.py
工具函数:utils.py
这个案例演示了:
面向对象编程的类设计
函数封装和模块化
分页功能的实现
多文件项目组织
用户交互界面
今日学习完毕,课后作业:
大家可以跟进上面的小程序,利用前面所学的东西,继续优化改进。希望大家能通过这些自制小程序,对python越来越喜欢。明天开始,我们继续学习新的python知识。