Skip to content

【练习】购物车

项目简介

在很多 APP 中,都有将一个正在浏览的端口添加到购物车中的功能。

使用面向对象的思想完成将商品添加到购物车。

知识模块

  • Python 编程语言

知识点

  • Python 面向对象

受众

  • 初级测试开发工程师
  • 初级Python开发工程师

作业要求

  • 定义一个商品类,包含 商品名称商品价格 两个属性,
  • 实现商品类的对象描述方法和添加到购物车方法
  • 定义一个购物车类,包含一个商品列表 属性,和 添加商品显示所有商品 两个方法

解题思路

  1. 在此案例中,很多人在实现向购特车中添加商品时,会使用以购物车调用添加方法,以 商品做为参数实现添加功能。

  2. 虽然在功能上,需求被实现,但这种实现方式并不符合面向对象的思想。

  3. 正确的实现过程应该是由商品对象发起添加功能,将购物车做为参数,因为在正常软件交互的界面中,也是在商品页面显示一个购物车,而不是在购物车中直接添加商品。

  4. 正常应该是由商品发起请求,请购物车将商品添加到购物车中。

完整代码

商品类

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()