Как создать оболочку ленивой инициализации (прокси) в Python? ⇐ Python
-
Гость
Как создать оболочку ленивой инициализации (прокси) в Python?
Учитывая дорогостоящую инициализацию объекта и двух потребителей:
класс A: защита __init__(): время.сон(42) self.foo = 1 защита func1 (объект: A): проходить защита func2 (объект: A): печать(A.foo) Как создать оболочку, которая бы задерживала инициализацию A до тех пор, пока не будет получен доступ к любому из его полей?
прокси = оболочка(A) func1(proxy) # выполняется немедленно func2(proxy) # вызывает инициализацию объекта и ждет 42 секунды. Другими словами, как отложить инициализацию объекта до тех пор, пока к любому из его свойств не будет получен доступ обычным способом a.foo или на худой конец a.__dict__['foo'].
Учитывая дорогостоящую инициализацию объекта и двух потребителей:
класс A: защита __init__(): время.сон(42) self.foo = 1 защита func1 (объект: A): проходить защита func2 (объект: A): печать(A.foo) Как создать оболочку, которая бы задерживала инициализацию A до тех пор, пока не будет получен доступ к любому из его полей?
прокси = оболочка(A) func1(proxy) # выполняется немедленно func2(proxy) # вызывает инициализацию объекта и ждет 42 секунды. Другими словами, как отложить инициализацию объекта до тех пор, пока к любому из его свойств не будет получен доступ обычным способом a.foo или на худой конец a.__dict__['foo'].
Мобильная версия