Отличие == и is Представим, что у нас есть два близнеца и фотоаппарат. Мы фотографируем одного близнеца и у нас получается фотография. И теперь хотим к ним применить операторы == и is.
Оператор == проверяет равенство. Это как если смотреть на наших близнецов и сказать, что они выглядят одинаково. (хотя они 2 разных человека) Оператор is проверяет на идентичность. Это как если смотреть на фотографию и сказать, что на фотографии тот же самый человек. Далее a - близнец номер один, b - его фото, с - близнец номер два. Мы видим ответ на два вопроса: 1) Выглядит ли то, что изображено на b, так же, как a? 2) Является ли то, что изображено на b, тем же объектом, что и a? А теперь мы создадим близнеца объекта а Мы видим ответ на два вопроса: 1) Выглядит ли с, так же, как a? 2) Является ли с, тем же объектом, что и a? Если подытожить, оператор == проверяет равенство значений, а is равенство объектов. __repr__ и __str__ полезные магические функции Функции __repr__ и __str__ позволяю