Приблизительно сравните десятичные атрибуты класса, определенного с помощью `attrs` - PullRequest
0 голосов
/ 22 января 2020

У меня есть класс Thing с атрибутом float 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__ или есть чистый способ сказать * 1008? * использовать math.isclose() или пользовательскую функцию сравнения?

1 Ответ

1 голос
/ 28 января 2020

Да, установка eq=True и реализация собственного __eq__ / __ne__ - ваш путь к go. В этом случае ваша потребность настолько конкретна c, что я даже не знаю, как абстрагировать ее, не ставя в тупик.

...