1

我有一个Thing带有浮点x属性的类。我想大致比较两个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()或自定义比较功能?

4

1 回答 1

1

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

于 2020-01-28T15:04:15.870 回答