Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗pyOpSlFr 114 of 174 menu
◀ ▶

Запрет произвольных атрибутов в ООП в Python

Если имя атрибута не входит в __slots__, Python не даст его создать у экземпляра. Попытка записи завершится ошибкой.

Пусть класс User разрешает только name и age:

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

Создадим объект и попробуем добавить атрибут salary:

user = User() user.name = 'john' user.salary = 1 # ошибка AttributeError

Так объект защищён от опечаток и от лишних полей, которых нет в задуманной модели данных.

Сделайте класс Employee с __slots__ для name и dept. Убедитесь, что запись несуществующего атрибута вызывает ошибку.

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