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

Введение в доступ к атрибутам в ООП в Python

У объекта можно перехватить чтение и запись атрибутов специальными методами с двойным подчеркиванием в имени. Python вызывает их сам, когда код обращается к свойству через точку.

Метод __getattr__ срабатывает, если обычный поиск атрибута ничего не нашел. Его удобно использовать, когда у объекта «как будто» есть свойство, которого на самом деле нет в памяти.

Давайте посмотрим на коротком примере. Пусть у класса User есть имя и фамилия, а обращение к full мы обработаем в __getattr__:

class User: def __getattr__(self, name): if name == 'full': return self.surn + ' ' + self.name raise AttributeError(name)

Проверим:

user = User() user.surn = 'john' user.name = 'smit' print(user.full) # выведет 'john smit'

Свойства surn и name хранятся как обычно. Имя full в объект не записывалось - его значение собрал метод __getattr__.

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