@UNy

Объекты в python?

Говорят что все в python является объектом(строки , списки , словари и т.д) , я немного не понимаю что это значит. Объект это ведь экземпляр класса , тогда объект строки это экземпляр от какого то класса?
Можете поподробней описать само понятие объекта в python?
  • Вопрос задан
  • 8593 просмотра
Решения вопроса 2
@rudikov
Касательно фразы "Объект это ведь экземпляр класса".
Эта фраза из объектно-ориентированного программирования (ООП). Сама она значит, что у каждого объекта есть какой-то класс, или иначе говоря объект является его экземпляром. Но здесь Вы смешиваете объектную модель Python с ООП, а это разные вещи. В Python любой экземпляр класса это объект, но далеко не все объекты это просто экземпляры класса.
К примеру, объектом является также класс, экземпляры этого класса (которые в ООП и называются объектами) тоже объекты, но лишь одни из возможных видов объектов в Python.
В Python, чтобы быть объектом участку памяти нужно иметь тип и количество ссылок на этот участок памяти (https://habrahabr.ru/company/buruki/blog/189986/).
Перечень всех встроенных типов можно найти здесь: https://docs.python.org/3/library/stdtypes.html.

Что касается "объект строки это экземпляр от какого то класса?".
Если говорить на языке ООП есть класс строк (в Python его имя str), любая конкретная строка, например 'я_строка', есть экземпляр класса строк или, иначе говоря, объект класса строк.
А если говорить на языке объектной модели Python: str - класс объектов, который и сам тоже объект.
А любой его экземпляр (какая-либо строка) - тоже объект.
В общем в ООП экземпляр и объект одно и то же, в Python - нет.

С практической точки зрения фраза "все есть объект" говорит, что что угодно можно присвоить переменной, передать в качестве аргумента функции, вернуть, как результат функции и т.д.
Например, в качестве аргумента или результата функции может быть другая функция или даже какой-либо класс (встроенный или созданный Вами).
Вообще такие вещи определяют гибкость языка, что в свою очередь иногда позволяет сделать значительно более простое и короткое решение.
Ответ написан
@MechanicZelenyy
Если кратко: здесь имеется ввиду что существует первородный класс _object_ и все остальные типы (включая пользовательские и дефолтные) являются наследниками этого класса. Для примера строка это объект (в значении этого слова как экземпляр класса) класса str, но данный класс является наследником класса object.

Если более полно то рекомендую читать Лутца, он рассказывает в том числе и об внутреннем устройстве python.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы