Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: Python, comparison, type coercion, duck typing

Как Python сравнивает объекты разных типов?

Проверяет понимание механизма сравнения объектов разных типов в Python и правил приведения типов.

Короткий ответ

В Python 3 сравнение объектов разных типов обычно вызывает TypeError, если не определены специальные методы. Исключение составляют числовые типы (int, float, complex), которые можно сравнивать между собой. Для пользовательских классов можно определить методы __lt__, __gt__ и другие для поддержки сравнения.

Длинный ответ

Сравнение объектов разных типов в Python

Python использует строгую типизацию, но при сравнении объектов разных типов применяются определенные правила. В Python 3 сравнение объектов разных типов, которые не являются числами, вызывает исключение TypeError. Это отличается от Python 2, где объекты разных типов могли сравниваться по произвольным правилам.

Числовые типы

Числовые типы (int, float, complex) поддерживают сравнение между собой. При сравнении int и float Python автоматически приводит int к float. Например:

print(5 == 5.0)  # True
print(3 < 3.5)   # True
print(1 + 2j == 1 + 2j)  # True

Пользовательские классы

Для пользовательских классов можно определить методы сравнения: __eq__, __ne__, __lt__, __le__, __gt__, __ge__. Это позволяет контролировать, как объекты сравниваются между собой и с объектами других типов. Например:

class Temperature:
    def __init__(self, celsius):
        self.celsius = celsius
    def __eq__(self, other):
        if isinstance(other, Temperature):
            return self.celsius == other.celsius
        return NotImplemented
    def __lt__(self, other):
        if isinstance(other, Temperature):
            return self.celsius < other.celsius
        return NotImplemented

Исключения и ошибки

При попытке сравнить объекты несовместимых типов (например, строку и число) Python возвращает NotImplemented для методов сравнения, что приводит к TypeError. Например:

print('5' > 3)  # TypeError: '>' not supported between instances of 'str' and 'int'

Вывод

Сравнение объектов разных типов в Python требует явного определения правил через специальные методы или использования числовых типов. Это обеспечивает безопасность типов и предотвращает неожиданное поведение.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • Python

    Python

Ключевые слова

#Python

#comparison

#type coercion

#duck typing

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.