Класс 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

Для каждой переменной вывести:

  1. значение;
  2. тип объекта.

Объяснить, почему первые два значения выглядят одинаково при обычном выводе, но являются разными объектами.


Задание 3

Определить, какие выражения успешно выполнятся, а какие приведут к ошибке:

25 + 5
'25' + '5'
25 + '5'
float('25') + 5

Для каждого объекта дополнительно проверить его тип с помощью type().