订单模型与JSON|课后复习

课堂课件 · 课前原始判断 · 本周导学

今天把规则放到明确的对象边界:单条明细有自己的属性与方法,购物车组合多条明细,保存和恢复时重新核对价格、数量与字段。

商品现价与订单历史价

沿图比较商品调整前后的两种价格:新交易使用现价,已保存的订单明细使用当时快照。图片说明业务关系,实际是否保存成功还需本人新进程读取。

机制商城哪里用必须能解释
class、实例、self、属性方法OrderLine两次构造是两个对象,方法读取当前对象
init/str/repr/eq/len初始化、展示、排错、往返核对、购物车行数值相等不代表同一对象;行数不等于件数
dataclass和__post_init__少写重复方法与构造校验注解不校验;frozen不是深度不可变
StrEnum订单状态名称合法名称仍可能是非法迁移
组合/继承/拷贝购物车、规则类型、价格快照有一组明细用组合;浅复制仍共享嵌套对象
Path/编码/模式/with快照文件路径以cwd解释,文本与字节不同,with负责关闭
JSON与显式恢复把明细存为文本后恢复Decimal转字符串;先字段检查再构造校验
风险提前预防怎样发现怎样处理怎样复验
类属性列表串车列表在__init__创建给A加商品后看B每实例独立列表两车连续加商品仍独立
浅复制污染历史明确复制层级与快照字段修改嵌套quantity对需要隔离的层复制或构造只读快照商品改价、历史金额不变
类型注解冒充校验构造入口显式检查True、0、NaN、1.001复用规则并拒绝非法值原失败拒绝、合法1通过
金额经过float全程Decimal,JSON字符串检查类型和文件原文修转换边界往返相等且类型仍Decimal
坏文件被当空数据读取失败不写文件比较错误前后字节保留文件与异常再定位原坏文件仍相同,合法新文件能读
直接覆盖旧快照本日save用x新建已存在目标再次保存换新文件名,说明已存在FileExistsError且旧内容不变

自测:为什么__str__不能支付?两个同值对象为何is为假?len(cart)如何约定?StrEnum能否允许已支付取消?with关闭文件是否回滚写入?逐项用今天的实际运行回答。

保留本人src/models.py、价格快照往返结果与累计订单字段恢复记录。最小明细完成不等于整笔订单已保存。D05从这些代码继续增加CLI、装饰器、异常分类与pytest;课后只整理课堂结果,不新增必做开发。