с eq методами обоих обьектов которые сравниваются?
почему a.eq(b) ,b.eq(a) дают ошибку NotImplemented, а просто a==b дает фолс без ошибок?
https://docs.python.org/3/reference/datamodel.html#object.__eq__
только левого
NotImplemented — это не ошибка, а специальный объект. Не путать с NotImplementedError
тогда почему == не дает ошибок там где _ек_ дает?
гугли, что такое __
короткий ответ: методы и атрибуты, названия которых начинаются с __, недоступны за пределами класса (на самом деле доступны, но это тёмная сторона силы) длинный ответ в документации
потому что когда ты сравниваешь a == b сначала будет вызван a.__eq__(b) и если тот вернул NotImplemented будет вызван b.__eq__(a)
а если они оба это дают?
сам-то как думаешь?
ну выходит False просто
ой да кого это останавливает порой)000
логично же
>>> class A: ... def __eq__(self, other): ... print('A.__eq__') ... return NotImplemented ... >>> A() == A() A.__eq__ A.__eq__ False
исключения надо не return, а raise
во-первых это не исключение.
в-третьих разуй глаза и читай что пишут в чате.
NotImplemented != NotImplementedError
Обсуждают сегодня