CodeQL 文档

不完整的排序

ID: py/incomplete-ordering
Kind: problem
Security severity: 
Severity: warning
Precision: very-high
Tags:
   - reliability
   - correctness
Query suites:
   - python-security-and-quality.qls

点击查看 CodeQL 代码库中的查询

实现排序运算符(__lt____gt____le____ge__)的类应该实现所有四个运算符,以确保两个对象之间的排序一致,并遵循通常的数学规则。如果排序与默认相等不一致,则还应实现 __eq____ne__

建议

确保实现所有四个排序比较,如果需要,还应实现 __eq__ __ne__

无需手动实现所有四个比较,可以使用 functools.total_ordering 类装饰器。

示例

在此示例中,仅实现了 __lt__ 运算符,这可能导致不一致的行为。应实现 __gt____le____ge__,在本例中,还应实现 __eq____ne__

class IncompleteOrdering(object):
    def __init__(self, i):
        self.i = i

    def __lt__(self, other):
        return self.i < other.i

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私