54просмотров
14.0%от подписчиков
24 марта 2026 г.
Score: 59
🧩 Code Cleanup Не проверяй тип через type() — используй isinstance() Часто вижу такое: def process(value): if type(value) == int: return value 2 if type(value) == str: return value.upper() Выглядит логично. Но это ловушка. После: def process(value): if isinstance(value, int): return value 2 if isinstance(value, str): return value.upper() В чём разница: type() проверяет точный тип — не учитывает наследование. isinstance() учитывает. class MyInt(int): pass x = MyInt(5) type(x) == int # False — сюрприз
isinstance(x, int) # True С type() подкласс не пройдёт проверку. Это ломает полиморфизм и нарушает принцип подстановки Лисков. Ещё плюс — isinstance() принимает кортеж типов: isinstance(value, (int, float)) # вместо двух отдельных проверок 🐍Вопросы с собесов -> ProstoPython