Easyisinstance
Чем type() отличается от isinstance()?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
type(obj) — возвращает класс объекта. type(obj) == int — точное сравнение (без наследования). isinstance(obj, int) — проверяет с учётом наследования.
class MyInt(int):
pass
mi = MyInt(5)
type(mi) == int # False
isinstance(mi, int) # True
# tuple типов
isinstance(x, (int, float))
# с ABC
import collections.abc
isinstance(x, collections.abc.Iterable)
# type() с тремя аргументами — динамическое создание класса
Dog = type('Dog', (object,), {'bark': lambda self: print('woof')})isinstance— стандарт для type checking (учитывает inheritance);- Duck typing — idiomatic Python не проверяет типы, а ловит
AttributeError(EAFP); - Type hints (Python 3.5+) + mypy — статическая проверка без runtime checks.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.