【练习】购物车
项目简介
在很多 APP 中,都有将一个正在浏览的端口添加到购物车中的功能。
使用面向对象的思想完成将商品添加到购物车。
知识模块
- Python 编程语言
知识点
- Python 面向对象
受众
- 初级测试开发工程师
- 初级Python开发工程师
作业要求
- 定义一个商品类,包含
商品名称
和商品价格
两个属性, - 实现商品类的对象描述方法和添加到购物车方法
- 定义一个购物车类,包含一个
商品列表
属性,和添加商品
及显示所有商品
两个方法
解题思路
-
在此案例中,很多人在实现向购特车中添加商品时,会使用以购物车调用添加方法,以 商品做为参数实现添加功能。
-
虽然在功能上,需求被实现,但这种实现方式并不符合面向对象的思想。
-
正确的实现过程应该是由商品对象发起添加功能,将购物车做为参数,因为在正常软件交互的界面中,也是在商品页面显示一个购物车,而不是在购物车中直接添加商品。
-
正常应该是由商品发起请求,请购物车将商品添加到购物车中。
完整代码
商品类
class Product:
def __init__(self, name, price):
self.name = name
self.price = price
def __str__(self):
return f"Product: {self.name}, Price: {self.price}"
def add_car(self, cart):
cart.add_product(self)
购物车类
class ShoppingCart:
def __init__(self):
self.products = []
def add_product(self, product):
self.products.append(product)
def show_products(self):
for product in self.products:
print(product)
程序入口
if __name__ == '__main__':
# 创建商品对象
product1 = Product("Apple", 5.0)
product2 = Product("Banana", 3.0)
product3 = Product("Orange", 4.0)
# 创建购物车对象
cart = ShoppingCart()
# 添加商品到购物车
product1.add_car(cart)
product2.add_car(cart)
product3.add_car(cart)
# 显示购物车中的商品信息
print("Shopping Cart:")
cart.show_products()