Check

Реализация прокси-объектов

Python Senior Яндекс
Как реализовать прозрачный прокси-объект, который делегирует все атрибуты другому объекту, но при этом может логировать доступ? Покажите базовый пример.
Ответы
Прокси через __getattr__
Простейший способ — хранить целевой объект внутри и переопределить `__getattr__` и, при необходимости, `__setattr__`: ```python class Proxy: def __init__(self, target): object.__setattr__(self, '_target', target) def __getattr__(self, name): print('get', name) return getattr(self._target, name) def __setattr__(self, name, value): print('set', name) setattr(self._target, name, value) ``` Важно использовать `object.__setattr__`, чтобы не попасть в рекурсию при установке `_target`.