Введение 0:00 Приветствие от Артёма Егорова. Обсуждение магических методов в Python. Фокус на методах `__eq__` и `__hash__`.
Создание класса и объектов 0:25 Определение пустого класса `Point`. Создание экземпляра класса `p1`. Проверка, что `p1` является объектом.
Сравнение объектов 1:20 Сравнение объектов по их ID. Необходимость сравнения по координатам `x` и `y`. Создание метода `__eq__` для сравнения по координатам.
Метод `__hash__` 2:17 Объяснение метода `__hash__` как одностороннего преобразования объекта в числовое значение. Демонстрация работы метода `__hash__` на примере `p2`.
Переопределение метода `__eq__` 3:17 Переопределение метода `__eq__` для сравнения по координатам. Создание нового экземпляра `p4`. Ошибка при попытке получить хэш после переопределения `__eq__`.
Использование `__hash__` в Python 5:18 Объяснение, что `__hash__` доступен только для неизменяемых объектов. Примеры неизменяемых объектов: числа, строки. Невозможность использования изменяемых объектов, таких как списки, в качестве ключей словаря.
Переопределение класса для использования в словарях 6:11 Переопределение класса `Point` для поддержки `__hash__`. Возврат значения `__hash__` от кортежа с координатами `x` и `y`. Проверка работы переопределённого класса.
Заключение 8:12 Подведение итогов обсуждения магических методов. Призыв задавать вопросы в комментариях. Прощание.