You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中按size属性比较对象的__lt__运算符实现正确性咨询

问题分析

你写的__lt__方法存在两个核心错误,导致不符合预期:

  • 字符串比较逻辑和实际大小顺序相反:Python字符串按ASCII码逐位比较,'big' < 'medium' < 'small',和你预期的尺寸大小顺序完全相反。比如self.size是small、other.size是big时,other.size > self.size实际返回False,但你需要的small < big应该返回True,结果完全倒置。
  • 分支覆盖不全:你只处理了self尺寸 < other尺寸的三种正向场景,剩下的所有场景(比如self是big、other是small,二者尺寸相等,self是medium、other是small等)都会返回None,Python在比较运算中收到None会直接抛出TypeError异常,完全无法正常运行。
修复方案

最简洁的实现是先给尺寸定义优先级映射,直接比较优先级数值即可,覆盖所有场景:

def __lt__(self, other):
    size_order = {"small": 1, "medium": 2, "big": 3}
    return size_order[self.size] < size_order[other.size]

如果要兼容不存在的尺寸值,可以额外加判断逻辑,返回NotImplemented避免异常。

内容的提问来源于stack exchange,提问作者basketballer13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:36:03