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

Чтение несуществующего атрибута в ООП в Python

Метод __getattr__ удобен для отлавливания обращений к несуществующим атрибутам. Он не подменяет уже созданные атрибуты - срабатывает только когда имя не найдено.

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

class User: pass

Давайте сделаем так, чтобы объект класса вел себя так, будто у него также есть атрибут 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'

Сделайте класс Date с публичными атрибутами year, month и day. С помощью метода __getattr__ сделайте атрибут week_day, который будет возвращать день недели, соответствующий дате.

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