Основываясь на том, что я читал, методы класса во многом аналогичны статическим методам с несколькими исключениями, но имеют преимущество предоставления указателя класса.python: Когда использовать метод static method over class?
В результате существует ли какая-либо причина использования статических методов над методами класса, если в классе определен метод не-экземпляра?
Редактировать: Поскольку некоторые из вас быстро отклоняют это как дубликат к другому вопросу. Это не вопрос о различии между классом и статическими методами. Скорее, речь идет о том, как решить их в подавляющем большинстве случаев, когда их функциональность перекрывается.
Редактировать # 2: Причина, по которой я прошу, заключается в том, что я рефакторинг существующего кода от других людей. В частности, существуют дочерние классы, которые используют те же модули, что и родительский, и я намерен переместить их в отдельные модули. Когда это происходит, необходимо зафиксировать ссылки на внеклассовые константы в статических методах. Я могу сделать это одним из следующих способов: 0 Импортировать все константы из родительского модуля 2. Переместить все константы в родительский класс и изменить все дочерние статические методы методам класса 3. Добавьте «ParentClass. " перед каждой ссылкой на константы
Я лично хочу сделать # 2, потому что это позволяет избежать загрязнения пространства имен, и именно поэтому я задал этот вопрос. В основном это вопрос стиля. Надеюсь, это обеспечит достаточный контекст.
Вы читали [* ЭТО *] (http://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod-in-python)? – Anzel
Да, прочитайте мое редактирование. – user1836155
Я не использовал дубликат, поскольку я знаю, что вы пытаетесь спросить о * WHEN *, однако, как вы не упомянули * ЧТО * вы прочитали, поэтому я разместил комментарий, просто пытаясь помочь. – Anzel