Ленивая инициализация члена класса Python
Я хотел бы знать, как Python инициализирует члена класса, но только при доступе к нему, если к нему обращаются. Я попробовал код ниже, и он работает, но есть ли что-то проще, чем это?
class MyClass(object):
_MY_DATA = None
@staticmethod
def _retrieve_my_data():
my_data = ... # costly database call
return my_data
@classmethod
def get_my_data(cls):
if cls._MY_DATA is None:
cls._MY_DATA = MyClass._retrieve_my_data()
return cls._MY_DATA