Объекты и атрибуты
Часто можно услышать, что в Python всё является объектом, и это правда. Но что такое объект? И из чего складывается это “всё”?
Когда переменных в коде становится много, их объединяют в группы — объекты. Добраться до переменной, прикрепленной к объекту можно через точку .
. Выглядит это похоже на вызов метода. Для сравнения, вызовем метод __len__
и вычислим длину строки:
print('строка это тоже объект'.__len__()) # выведет 22
А теперь узнаем значение прикрепленной переменной __class__
. Она хранит тип данных и имеется у любого объекта в Python, в том числе у строки:
print('строка это тоже объект'.__class__) # выведет <class 'str'>
В этот раз мы заменили __len__
на __class__
и не поставили круглые скобки ()
, на этом отличия заканчиваются. Прикрепленные переменные и прикрепленные функции — методы — имеют так много общего, что вместе их называют атрибутами.
Объект — это набор атрибутов: прикрепленных переменных и функций. До любого атрибута можно добраться через точку .
:
print('строка это тоже объект'.__len__) # выведет <method...>
print('строка это тоже объект'.__class__) # выведет <class 'str'>
print('строка это тоже объект'.__doc__) # выведет документацию по типу данных Строка
Объекты в Python встречаются повсюду и у всех них есть атрибуты. Строки, числа, функции и даже модули — все это объекты, а значит у них есть атрибут __class__
:
print(''.__class__) # выведет <class 'str'>
number = 1
print(number.__class__) # выведет <class 'int'>
print(print.__class__) # выведет <class 'builtin_function_or_method'>
import os # подключаем стандартный модуль os
print(os.__class__) # выведет <class 'module'>
Чтобы не писать каждый раз длинное название __class__
используют функцию type()
. Она умеет работать с любыми данными, благодаря тому что сама обращается к атрибуту __class__
:
print(type('')) # выведет <class 'str'>
print(type(1)) # выведет <class 'int'>
print(type(print)) # выведет <class 'builtin_function_or_method'>
import os # подключаем стандартный модуль os
print(type(os)) # выведет <class 'module'>
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.