Ленивый декоратор класса недвижимости

У меня есть одна модель Django, которая должна выполнить некоторую обработку, ссылаясь на пользовательскую модель.

Я не могу работать с классом этой модели во время загрузки классов, потому что порядок загрузки классов неизвестен.

Поэтому мне нужно добавить некоторые атрибуты класса во время выполнения, в данный момент я добавляю их в__init__ или же__new__ любить:

def __new__(cls, *args, **kwargs):
    # hack to avoid INSTALLED_APPS initialization conflicts.
    # get_user_model() can't be called from this module at class loading time,
    # so some class attributes must be added later.
    # Metaclasses could me more appropiate but I don't want to override
    # dango's metaclasses.
    if not hasattr(cls, '_reverse_field_name_to_user'):
        cls._find_reverse_field_name_to_user()
    return Group.__new__(cls, *args, **kwargs)

Это работает, но выглядит ужасно, поэтому я подумал об использовании чего-то вроде@lazyclassproperty для этих атрибутов.

Я нашел несколько@classproperty а также@lazyproperty декораторы, но не один для обоих, и я не знаю, как написать один сам.

Вопрос: Как я мог написать такой декоратор? или предложить другую более чистую альтернативу моей нынешней глупой реализации.

Ответы на вопрос(1)

Ваш ответ на вопрос