Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить