Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗pyOpSlNd 115 of 174 menu
◀ ▶

Отсутствие словаря свойств в ООП в Python

У обычного объекта данные экземпляра лежат в словаре __dict__. При заданном __slots__ этот словарь для экземпляра не создаётся: значения хранятся в фиксированных ячейках по списку имён.

Это не связано с дескриптором и декоратором property: речь только о том, где лежат поля объекта.

Сделаем класс User со слотами:

class User: __slots__ = ('name', 'age')

Создадим объект и проверим наличие __dict__:

user = User() user.name = 'john' print(hasattr(user, '__dict__')) # выведет False

Прямое обращение к __dict__ тоже приведёт к ошибке:

print(user.__dict__) # ошибка AttributeError

Сделайте класс Product с __slots__. Проверьте, что у экземпляра нет __dict__ и что чтение __dict__ вызывает ошибку.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить