Класс type и определение типа объекта в Python
Обновлено:
1. Класс type
В Python существует встроенный класс:
type
С его помощью можно узнать, к какому классу относится определённый объект.
Общий вид:
type(object)
В круглые скобки передаём объект, тип которого хотим узнать.
2. Примеры с изученными типами данных
Целое число:
type(25)
Результат:
<class 'int'>
Вещественное число:
type(3.14)
Результат:
<class 'float'>
Строка:
type('Hello')
Результат:
<class 'str'>
Список:
type([10, 20, 30])
Результат:
<class 'list'>
Кортеж:
type((10, 20, 30))
Результат:
<class 'tuple'>
Объект None:
type(None)
Результат:
<class 'NoneType'>
3. Проверка типа переменной
Объект можно сначала сохранить в переменную:
number = 25
После этого передать переменную в type():
type(number)
Результат:
<class 'int'>
Функция получает объект, на который ссылается переменная, и возвращает его класс.
4. type тоже является классом
type — это встроенный класс Python.
На более глубоком уровне type является метаклассом: с его помощью Python создаёт обычные классы.
Подробно метаклассы изучаются значительно позже.
Сейчас достаточно запомнить:
type(object)позволяет узнать класс переданного объекта.
5. Почему одного print() недостаточно
Рассмотрим два объекта:
first_value = 25
second_value = '25'
Первый объект является целым числом:
25
Второй объект является строкой:
'25'
Но функция print() выводит строки без кавычек:
print(first_value)
print(second_value)
Результат:
25
25
Визуально результаты выглядят одинаково.
Однако это разные объекты:
print(type(first_value))
print(type(second_value))
Результат:
<class 'int'>
<class 'str'>
6. Почему тип данных важен
Целое число можно использовать в математическом выражении:
25 + 5
Результат:
30
Но строка с цифрами работает иначе:
'25' + '5'
Результат:
'255'
А сложение числа и строки приведёт к ошибке:
25 + '5'
Ошибка:
TypeError
Поэтому программисту важно понимать, с каким типом данных он работает.
7. Практическое применение type()
Иногда программа получает данные из:
- файла;
- таблицы;
- базы данных;
- сайта;
- другой программы;
- ответа пользователя.
Мы можем ожидать число:
25
Но получить строку:
'25'
Функция print() не всегда позволяет визуально заметить разницу.
В такой ситуации можно временно добавить проверку:
print(value)
print(type(value))
Теперь программист увидит:
- само значение;
- класс полученного объекта.
Это помогает найти причину неправильных вычислений или ошибки.
8. type() принимает один аргумент
Правильно:
type(25)
Вызов без аргументов приведёт к ошибке:
type()
На данном этапе также не передаём несколько аргументов:
type(25, 3.14)
Для определения класса одного объекта используем один аргумент:
type(object)
9. Основные правила урока
Класс объекта можно узнать с помощью:
type(object)
Пример:
type(25)
Результат:
<class 'int'>
Строка с цифрами и целое число выглядят одинаково при выводе:
print(25)
print('25')
Но имеют разные типы:
type(25)
type('25')
type() особенно полезна во время обучения и поиска ошибок, когда нужно точно понять, с каким объектом работает программа.
Домашнее задание
Задание 1
Сначала самостоятельно определить результат, затем проверить в IDLE:
type(100)
type(100.0)
type('100')
type([100])
type((100,))
type(None)
Задание 2
Создать переменные:
first_value = 50
second_value = '50'
third_value = 50.0
Для каждой переменной вывести:
- значение;
- тип объекта.
Объяснить, почему первые два значения выглядят одинаково при обычном выводе, но являются разными объектами.
Задание 3
Определить, какие выражения успешно выполнятся, а какие приведут к ошибке:
25 + 5
'25' + '5'
25 + '5'
float('25') + 5
Для каждого объекта дополнительно проверить его тип с помощью type().