Широко переопределить оператор (проверка типа с "==") - PullRequest
1 голос
/ 03 мая 2019

Есть ли способ заставить Python (3.6.3) выдавать ошибку при сравнении двух объектов разных типов?Например, я бы хотел, чтобы "2" == 2 выдавал ошибку, а не возвращал False.

Наивно, я мог бы добавить type(a) == type(b) вместе с a == b в условном выражении, но я надеюсь наболее простое решение;как замена == другим символом (ами).

В аналогичном контексте мне нравится, что в Python сравнение между str и int приводит к ошибке несоответствия типов.Например, "2" >= 2 выдает ошибку.Но я ищу то же самое поведение для равенства ==.

PS: я думаю, что я немного неправильно понял вопрос.Если быть точным, я ищу простую альтернативу ==, которая выдает ошибку с разными типами;вместо переопределения поведения == в целом.

Спасибо!

1 Ответ

3 голосов
/ 03 мая 2019

Это относительно простое решение, но оно требует, чтобы вы отредактировали все ваши существующие варианты использования ==.

Изменить это:

if a == b:

К этому:

if isequal(a, b):

def isequal(a, b):
    assert type(a) == type(b)
    return a == b
...