@classmethod или @staticmethod В python (Django)

Я использовал spring framework для разработки серверного приложения, а теперь начинаю изучать Django.

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

"Нет ли проблем с памятью при использовании @classmethod или @staticmethod? в python"

В Spring (java) существует проблема злоупотребления статикой, а также Spring поддерживает управление объектом (IoC контейнер).

Но когда я использую Django, там нет декоратора или настройки объекта.

Просто я использую @classmethod, и использую его с именем класса (например, AccountService.join() )

@statictmethod можно использовать, если вам нужен метод, который можно вызвать с помощью ModelName.method_name() и который не работает над объектом.

Вы на самом деле не используете classmethod в своих Моделях. Эти операции выполняются через класс Manager. Смотрите этот принятый ответ о classmethod Методы класса модели Django для предопределенных значений

При "нормальном использовании" это нормально. Методы класса не получают доступа к данным экземпляра, а статические методы не получают доступа к родительскому классу. Если для вас это не является проблемой, то вы можете использовать @classmethod или @staticmethod соответственно. Однако в действительности, если не принимать во внимание семантические преимущества/выгоды для чтения, это, скорее всего, преждевременная оптимизация, особенно в контексте веб-приложений, где львиная доля задержек/ресурсов уходит на другие вещи.

Вернуться на верх