Проверяет понимание механизма сравнения объектов разных типов в 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 требует явного определения правил через специальные методы или использования числовых типов. Это обеспечивает безопасность типов и предотвращает неожиданное поведение.