Найти в Дзене
Python Каждый День

Ошибка сравнения классов в Python

Когда Python программисты начинают погружаться в удивительный мир ООП, его сразу охватывает много вопросов. А от количества информации порой можно удивляться. Важной частью классов в Python являются магические методы, получившие второе название - дандер методы (d under - double under, потому что такие методы записываются с 2 нижними подчёркиваниями по бокам, пример __new__). Они значительно могут упростить жизнь разработчика, а иногда без них просто нельзя обойтись. Сегодня мы узнаем, почему нельзя просто так сравнивать объекты 1 класса, чем это может быть опасно, и как обойти. Внимательно посмотрите на ниже приведённый код: Задайте себе вопрос, что должно быть выведено по завершению этого кода? Ответили False? Поздравляю, вы хорошо помните ООП. Иначе не расстраивайтесь, и давайте разбираться. За сравнение объектов класса отвечает такой магический метод , как __eq__, в котором можно сравнить тот атрибут экземпляра класса, который мы выберем. Реализация метода

Когда Python программисты начинают погружаться в удивительный мир ООП, его сразу охватывает много вопросов. А от количества информации порой можно удивляться.

Важной частью классов в Python являются магические методы, получившие второе название - дандер методы (d under - double under, потому что такие методы записываются с 2 нижними подчёркиваниями по бокам, пример __new__). Они значительно могут упростить жизнь разработчика, а иногда без них просто нельзя обойтись.

Сегодня мы узнаем, почему нельзя просто так сравнивать объекты 1 класса, чем это может быть опасно, и как обойти.

Внимательно посмотрите на ниже приведённый код:

Задайте себе вопрос, что должно быть выведено по завершению этого кода?

Ответили False? Поздравляю, вы хорошо помните ООП. Иначе не расстраивайтесь, и давайте разбираться.

За сравнение объектов класса отвечает такой магический метод , как __eq__, в котором можно сравнить тот атрибут экземпляра класса, который мы выберем. Реализация метода в нашем примере:

-2

Мы сравниваем классы, и вот уже выводит True. В методе __eq__ мы сначала сравниваем принадлежность объекта к нашему классу, в положительном исходе возвращает операцию сравнения параметры money наших объектов, в ином случае вызываем исключение TypeError.

Магические методы в Python - неотъемлемая часть ООП, а если вы их знаете, это вам упростит жизнь.