目标:掌握类与对象的核心概念,实现模块化的订单业务逻辑
class Order:
"""订单基类"""
def __init__(self, order_id, customer):
self.order_id = order_id # 订单号
self.customer = customer # 客户名
self.items = [] # 商品列表
self.total = 0.0 # 总金额
def add_item(self, name, price, quantity=1):
"""添加商品项"""
self.items.append({
"name": name,
"price": price,
"quantity": quantity
})
self._calculate_total()
def _calculate_total(self):
"""计算订单总额(私有方法)"""
self.total = sum(item["price"] * item["quantity"] for item in self.items)
def display(self):
"""打印订单摘要"""
print(f"订单 #{self.order_id}")
print(f"客户:{self.customer}")
for item in self.items:
print(f"- {item['name']} x{item['quantity']} ¥{item['price']:.2f}")
print(f"总计:¥{self.total:.2f}\n")
# 创建订单实例
order_101 = Order("20240315-001", "张三")
order_101.add_item("无线耳机", 299.0, 2)
order_101.add_item("手机壳", 59.9)
order_101.display()
class VIPOrder(Order):
"""VIP订单(享受9折优惠)"""
def __init__(self, order_id, customer, vip_level):
super().__init__(order_id, customer)
self.vip_level = vip_level
def _calculate_total(self): # 重写计算方法
super()._calculate_total()
self.total *= 0.9 # 应用折扣
# VIP订单实例
vip_order = VIPOrder("20240315-VIP01", "李四", 2)
vip_order.add_item("智能手表", 899.0)
vip_order.display() # 输出显示折扣后价格
class OrderManager:
"""订单管理器"""
def __init__(self):
self.orders = []
def import_orders(self, order_list):
"""批量导入订单"""
for order_data in order_list:
if order_data["is_vip"]:
order = VIPOrder(
order_data["id"],
order_data["customer"],
order_data["vip_level"]
)
else:
order = Order(
order_data["id"],
order_data["customer"]
)
for item in order_data["items"]:
order.add_item(item["name"], item["price"], item.get("quantity", 1))
self.orders.append(order)
def generate_daily_report(self):
"""生成日报"""
total_income = sum(order.total for order in self.orders)
print(f"今日总订单数:{len(self.orders)}")
print(f"当日总营收:¥{total_income:.2f}")
# 模拟数据
orders_data = [
{
"id": "20240315-002",
"customer": "王五",
"is_vip": False,
"items": [
{"name": "充电宝", "price": 129.0, "quantity": 3}
]
},
{
"id": "20240315-VIP02",
"customer": "赵六",
"is_vip": True,
"vip_level": 3,
"items": [
{"name": "蓝牙音箱", "price": 399.0}
]
}
]
# 执行处理
manager = OrderManager()
manager.import_orders(orders_data)
manager.generate_daily_report()
上一篇 Day5:python文件处理——自动备份销售数据与异常日志