Python 3 - Утвердить логическое значение. - PullRequest
0 голосов
/ 26 ноября 2018

Я переопределил __eq___ в классе, который я сейчас проверяю.Все методы (не показаны) работают нормально, но когда я добавил __eq__, я получаю сообщение об ошибке.

Мой метод:

def __eq__(self, other):
    """ Tests if two dual objects are equal or not. 

    Returns
    ------- 
    True or false, depending on the comparison

    Examples
    -------- 
    >>> z = Dual(1, 1)
    >>> y = Dual(1, 1)
    >>> z == y
    True
    """
    # compare the real and dual parts of self versus other.
    #Output True if both cases match, false otherwise. 
    if self.r == other.r and self.d == other.d:
        return True
    else:
        return False

В моем файле для тестирования следующий метод предназначен для проверки работоспособности этого метода:

def test_eq():
    z = sj.Dual(1,1)
    y = sj.Dual(1,1)
    assert z == y

Полученное сообщение об ошибке:следующим образом:

=================================== FAILURES ===================================
___________________________________ test_eq ____________________________________
    def test_eq():
        z = sj.Dual(1,1)
        y = sj.Dual(1,1)
>       assert z == y
E       assert 1.00 + eps 1.00 == 1.00 + eps 1.00
spacejam/tests/dualnumbers_test.py:53: AssertionError
=============================== warnings summary ===============================
/home/travis/virtualenv/python3.6.3/src/spacejam/spacejam/dual.py:23
  /home/travis/virtualenv/python3.6.3/src/spacejam/spacejam/dual.py:23: DeprecationWarning: invalid escape sequence \p
    """

Есть ли что-то, что я делаю ужасно неправильно или упускаю из виду?

1 Ответ

0 голосов
/ 26 ноября 2018

Ошибка ясно показывает, что значения z и y находятся в форме "1.00 + eps 1.00", которые вы не можете напрямую сравнить.Вы можете сделать ниже:

assert z.r == y.r
assert z.d == z.d
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...