大致比较用 `attrs` 定义的 class 的十进制属性

Approximately compare decimal attributes of a class defined with `attrs`

我有一个带有浮动 x 属性的 Thing class。我想大致比较 Thing 的两个实例,相对容差为 1e-5.

import attr

@attr.s
class Thing(object):
    x: float = attr.ib()


>>> assert Thing(3.141592) == Thing(3.1415926535)  # I want this to be true with a relelative tolerance of 1e-5
False

我是否需要覆盖 __eq__ 方法,或者是否有一种简洁的方法告诉 attr 使用 math.isclose() 或自定义比较函数?

是的,设置 eq=True 并实施您自己的 __eq__/__ne__ 是您的选择。在这种情况下,您的需求是如此具体,以至于我什至不知道如何将其抽象出来而不会使它混淆。