Встречается на собеседованиях • сегодня

Какие знаешь варианты lazy loading

В Python есть несколько способов реализации lazy loading (ленивой загрузки):

  1. Декораторы
python
def lazy_property(fn):
    attr_name = '_lazy_' + fn.__name__
    @property
    def _lazy_property(self):
        if not hasattr(self, attr_name):
            setattr(self, attr_name, fn(self))
        return getattr(self, attr_name)
    return _lazy_property
  1. Использование __getattr__
python
class LazyLoader:
    def __init__(self, loader_func):
        self.loader_func = loader_func
        self._loaded = None
    
    def __getattr__(self, name):
        if self._loaded is None:
            self._loaded = self.loader_func()
        return getattr(self._loaded, name)
  1. Генераторы
python
def lazy_range(n):
    i = 0
    while i < n:
        yield i
        i += 1
  1. Библиотеки
  • django.utils.functional.cached_property
  • werkzeug.utils.cached_property

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

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы