Найти тему
mrmarshanskiy

instance.__dict__ в объекте класса

instance.__dict__ - это словарь, который содержит все атрибуты экземпляра класса в виде пар ключ-значение. То есть, если у вас есть экземпляр класса obj и атрибут x, то obj.__dict__['x'] вернет значение этого атрибута.

В первом примере использовалось выражение instance.__dict__[self.name], чтобы установить значение атрибута, на котором определен дескриптор. Это нужно было для того, чтобы избежать рекурсивного вызова метода __set__() дескриптора. Если бы мы написали instance.x = value, то это привело бы к вызову метода __set__() дескриптора, что могло бы привести к бесконечной рекурсии.

Вместо этого мы обратились к словарю __dict__ экземпляра класса, который не содержит дескрипторов, и установили значение атрибута напрямую.

__dict__ не является дескриптором - это просто словарь, в котором хранятся атрибуты экземпляра класса. В Python все атрибуты, включая методы и дескрипторы, хранятся в словаре __dict__, который является внутренней реализацией каждого экземпляра класса.

Использование

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

Например, предположим, что у вас есть класс Person, который представляет человека и имеет атрибуты name и age. Вы создали экземпляр класса p:

-2

Вы можете использовать p.__dict__ для доступа к словарю атрибутов экземпляра p:

-3

Вывод будет таким:

-4

Вы можете использовать этот словарь для динамического изменения атрибутов экземпляра:

-5

Вывод будет равен 31.

Вы также можете использовать __dict__ для отладки и тестирования, чтобы убедиться, что все атрибуты правильно установлены и доступны в экземпляре класса.

Скопировать код можно из поста на Boosty
instance.__dict__ в объекте класса - mr.Marshanskiy