0
我有一個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
裝飾器,但兩個都沒有,我也不知道如何自己寫一個裝飾器。
問題:我怎麼能編碼這樣的裝飾?或者建議另一種更清潔的替代方案來實現我目前愚蠢的實施。
工程就像一個魅力。非常感謝,我希望我能不止一次地開心! –