Почему моя переменная экземпляра не находится в __dict__?

Если я создам класс A следующим образом:

 class A: def __init__(self): self.name = 'A' 

Проверка члена __dict__ выглядит как {'name': 'A'}

  • неверные ответы для квадратичных уравнений
  • Как открыть и обработать файл CSV, хранящийся в Google Cloud Storage, используя Python
  • Python усекает длинную строку
  • Проблема кодирования в движке приложения при отправке форм multipart / form-data
  • Найти самую длинную подстроку в алфавитном порядке
  • Определить группы переменных непрерывных чисел в списке
  • Если, однако, я создаю класс B :

     class B: name = 'B' 

    __dict__ пуст.

    В чем разница между ними, и почему name не отображается в B __dict__ ?

  • Как преобразовать строку даты в другой формат
  • Что такое Pythonic способ хранения блока данных в сценарии Python?
  • Передавать функцию как переменную с одним фиксированным входом
  • Как превратить список строк в сложные числа в python?
  • Импортировать пакет python из локального каталога в интерпретатор
  • Почему точка с запятой разрешена в этом фрагменте питона?
  • 2 Solutions collect form web for “Почему моя переменная экземпляра не находится в __dict__?”

    B.name – это атрибут класса, а не атрибут экземпляра. Он отображается в B.__dict__ , но не в b = B(); b.__dict__ b = B(); b.__dict__ .

    Различие несколько затушевано, потому что, когда вы получаете доступ к атрибуту экземпляра, класс dict является резервным. Таким образом, в приведенном выше примере b.name даст вам значение B.name .

     class A: def _ _init_ _(self): self.name = 'A' a = A() 

    Создает атрибут экземпляра объекта a типа A, поэтому его можно найти в: a.__dict__

     class B: name = 'B' b = B() 

    Создает атрибут класса B, и атрибут может быть найден в B.__dict__ альтернативно, если у вас есть экземпляр b типа B, вы можете увидеть атрибуты уровня класса в классе b.__class__.__dict__

    Python - лучший язык программирования в мире.