Встречается на собеседованиях • сегодня
Чем можно заменить @property
Для замены @property в Python можно использовать несколько подходов, в зависимости от ситуации:
-
Геттеры/сеттеры (явные методы)
pythonclass MyClass: def __init__(self): self._x = None def get_x(self): return self._x def set_x(self, value): self._x = value -
__getattr__и__setattr__
Позволяют перехватывать доступ к атрибутам динамически:pythonclass MyClass: def __getattr__(self, name): if name == 'x': return self._x raise AttributeError(name)
-
Дескрипторы (
__get__,__set__)
Полезны для повторного использования логики:pythonclass Descriptor: def __get__(self, obj, objtype=None): return obj._x def __set__(self, obj, value): obj._x = value class MyClass: x = Descriptor() -
functools.cached_property(Python 3.8+)
Для ленивых вычислений с кэшированием:pythonfrom functools import cached_property class MyClass: @cached_property def x(self): return expensive_computation()
Выбор зависит от задачи:
- Для простых случаев —
@property. - Для динамических атрибутов —
__getattr__. - Для повторяющейся логики — дескрипторы.
- Для кэширования —
cached_property.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы