大致比较用 `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__
是您的选择。在这种情况下,您的需求是如此具体,以至于我什至不知道如何将其抽象出来而不会使它混淆。
我有一个带有浮动 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__
是您的选择。在这种情况下,您的需求是如此具体,以至于我什至不知道如何将其抽象出来而不会使它混淆。