Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705

object vs instance vs class, в чём разница?

06.07.2020, 12:12. Показов 2461. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья! Сабж. Но лучше вот как объяснить:

https://docs.python.org/releas... attributes


object.__dict__
A dictionary or other mapping object used to store an object’s (writable) attributes.

instance.__class__
The class to which a class instance belongs.

class.__bases__
The tuple of base classes of a class object.
Я так понимаю, всё есть объект и потому __dict__ есть у всего. Ладно, тогда хотелось бы увидеть пример объекта, который не instance, а то я сам сообразить не могу. То есть чтобы атрибут __dict__ присутствовал, а атрибут __class__ нет. Так, может, лучше дойдёт. Спасибо, кто откликнется.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.07.2020, 12:12
Ответы с готовыми решениями:

Разница между CB и public class в плане instance of an object
Приветствую, вопрос, в WPF, в MainWindow.xaml.cs чтобы работать с методами класса Reading, я создаю объект класса и это работает....

Instance, свойста MultiUse и GlobalMultiUse - в чем же разница?
Пишу компонент (ActiveX DLL) и вот порисовался такой вопрос: Так в чем же собственно разница в свойстве Instence между MultiUse и...

Кто подскажет какая между ними разница (Object and class)
Кто подскажет какая между ними разница

4
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
06.07.2020, 16:57
kravam, Объекты – это области памяти со значениями и ассоциированными с ними наборами операций.
В самом общем виде можно сказать, что программы на языке Python выполняют <<некоторые действия>> над <<чем-то>>. Под «чем-то» подразумеваются объекты, над которыми выполняются некоторые действия.

Говоря более формальным языком, данные в языке Python представлены в форме объектов – либо встроенных, предоставляемых языком Python, либо объектов, которые мы создаем с применением конструкций языка Python или других инструментов, таких как библиотеки расширений, написанные на языке C.

object - базовый тип для пользовательских типов (классов нового стиля).
В отличие от классов старого стиля, объекты которых создавались на базе встроенного типа instance, классы нового стиля являются полноценными пользовательскими типами.

Для классов старого стиля type(x) выдаст instance — подразумевается, что класс не представляет собой самостоятельный тип, а лишь является экземпляром некого базового типа.

Внимание
Классы старого стиля упразднены в Python 3, где пользовательские типы, определённые без явного указания родителя, автоматически являются наследниками object. (мое прим. Классы в Python 3 являются наследниками (подклассами) общего для всех объектов класса object)

Добавлено через 33 минуты
kravam, И так давайте разбираться.
Для начала нужно понять, что начиная с версии 3.0 , где были введены классы нового стиля, понятия "тип" и "класс" стали синонимами.
Создадим пустой класс
Python
1
2
>>> class A:
    pass
При этом в оперативной памяти создается объект питона, являющийся классом. Имя класса "А" является обычной переменной, содержащей в себе ссылку на данный класс (то есть на область памяти, в которой размещен данный объект-класс)
Теперь поэкспериментируем:
Python
1
2
3
4
5
6
7
8
9
10
>>> type(A)
<class 'type'>
>>> type(type)
<class 'type'>
>>> type(object)
<class 'type'>
>>> object.__dict__
[SPOILER]mappingproxy({'__repr__': <slot wrapper '__repr__' of 'object' objects>, '__hash__': <slot wrapper '__hash__' of 'object' objects>, '__str__': <slot wrapper '__str__' of 'object' objects>, '__getattribute__': <slot wrapper '__getattribute__' of 'object' objects>, '__setattr__': <slot wrapper '__setattr__' of 'object' objects>, '__delattr__': <slot wrapper '__delattr__' of 'object' objects>, '__lt__': <slot wrapper '__lt__' of 'object' objects>, '__le__': <slot wrapper '__le__' of 'object' objects>, '__eq__': <slot wrapper '__eq__' of 'object' objects>, '__ne__': <slot wrapper '__ne__' of 'object' objects>, '__gt__': <slot wrapper '__gt__' of 'object' objects>, '__ge__': <slot wrapper '__ge__' of 'object' objects>, '__init__': <slot wrapper '__init__' of 'object' objects>, '__new__': <built-in method __new__ of type object at 0x00007FFBA96F8EC0>, '__reduce_ex__': <method '__reduce_ex__' of 'object' objects>, '__reduce__': <method '__reduce__' of 'object' objects>, '__subclasshook__': <method '__subclasshook__' of 'object' objects>, '__init_subclass__': <method '__init_subclass__' of 'object' objects>, '__format__': <method '__format__' of 'object' objects>, '__sizeof__': <method '__sizeof__' of 'object' objects>, '__dir__': <method '__dir__' of 'object' objects>, '__class__': <attribute '__class__' of 'object' objects>, '__doc__': 'The most base type'})[/SPOILER]
>>> object.__class__
<class 'type'>
Отсюда мы видим, что класс object является в питоне суперклассом самого верхнего уровня. Все остальные классы являются подклассами класса object. И все объекты питона, являющиеся экземплярами какого либо класса, наследуют атрибуты класса object. При этом сами классы тоже являются объектами, которые являются экземплярами класса type , или что то же самое, экземплярами класса class , так как тип и класс (понятия, а не ключевые слова синтаксиса) в классах нового стиля являются синонимами.
Однако не все объекты питона следуют этим правилам. Например
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> type(5)
<class 'int'>
>>> 5.__dict__
SyntaxError: invalid syntax
>>> 5.__class__
SyntaxError: invalid syntax
>>> x = 5
>>> x.__dict__
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    x.__dict__
AttributeError: 'int' object has no attribute '__dict__'
>>> x.__class__
<class 'int'>
Как я понимаю, это особенности реализации, которая не полностью соответствует общей идеологии классов нового стиля.

Добавлено через 10 минут
Видимо в силу сложности реализации того, что бы например числа имели все те же атрибуты, что определены в классе object.
1
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
06.07.2020, 19:19
Цитата Сообщение от Viktorrus Посмотреть сообщение
Python
1
2
>>> 5.__class__
SyntaxError: invalid syntax
Цитата Сообщение от Viktorrus Посмотреть сообщение
Видимо в силу сложности реализации того, что бы например числа имели все те же атрибуты, что определены в классе object.
В случае с литералом — особенности парсера.
Python
1
2
3
4
5
6
7
8
9
10
>>> 0x1.__class__
<class 'int'>
>>> (1).__class__
<class 'int'>
>>> 1.0.__class__
<class 'float'>
>>> 1..__class__
<class 'float'>
>>> (1.).__class__
<class 'float'>
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
06.07.2020, 19:59
Viktorrus,
Атрибут __dict__ это
A dictionary or other mapping object used to store an object’s (writable) attributes. (Словарь или другой объект сопоставления, используемый для хранения атрибутов объекта (доступных для записи).)
Соответственно, он есть только у тех объектов, которым этот словарик (пространство имен) необходим в силу наличия изменяемых атрибутов.
Большинство встроенных типов его не имеют. Если мы не должны иметь возможности изменять их атрибуты, то нет и словаря.
P.S. Могу ошибаться, но это кажется имеет именно такое объяснение.
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
06.07.2020, 20:31
Garry Galler, Я с Вами согласен.
0x10, Видимо и в этом дело. Есть методы, где важна правильная литеральная запись.
Я столкнулся с методом класса int , в котором метод применяется к числам, но числа нужно размещать в круглых скобках.
Метод int.to_bytes()
Пример:
Python
1
2
>>> (1024).to_bytes(2, byteorder='big')
b'\x04\x00'
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.07.2020, 20:31
Помогаю со студенческими работами здесь

В чем разница меж: (cin >> OBJECT[i].X).get(); и getline(cin, OBJECT[i].X)
В чем разница меж: (cin &gt;&gt; OBJECT.X).get(); и getline(cin, OBJECT.X) Подскажите где что можно использовать?

В чем разница между @class и #import?
Всем доброго дня ! Вот у меня вопрос: в чем различие между @class и #import. @class работает быстрей, но есть случаи когда в хидер нельзя...

В чем принципиальная разница между id и class?
Принципиальная. Верстая, экспериментируя, разрабатывая начал задумываться над тем, в чем разница между id и class? Особенно, когда...

В чем разница record и class tobject?
Объект создается и разрушается, record просто хранит в себе ссылки на какие-то структуры, это всё? Добавлено через 16 минут так же...

Односвязный список: В чём разница между struct и class?
После неудач работы с Vector, а так же отсутствия (Хотя, скорее всего, я просто плохо искал) хорошей русской документации по нему, решил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru