Це не про @staticmethod
і @classmethod
! Я знаю, як staticmethod
працює. Що я хочу знати - це правильні випадки використання для @staticmethod
функцій на рівні модуля.
Я погуглив це питання, і, здається, є деяка загальна згода, що функції рівня модулів віддають перевагу статичним методам, оскільки це більше пітонічно. Статичні методи мають перевагу прив’язаності до свого класу, що може мати сенс, якщо тільки цей клас використовує його. Однак у Python функціональність, як правило, організовується модулем, не класом, тому зазвичай зробити його функцією модуля теж є сенс.
Статичні методи також можуть бути замінені підкласами, що є перевагою або недоліком залежно від того, як ви на це дивитесь. Хоча статичні методи, як правило, "функціонально чисті", тому це не може бути розумним, але іноді це може бути зручно (хоча це може бути одним із таких "зручних, але НІКОЛИ НЕ РОБИТИ" таких речей, лише досвід може навчити вас).
Чи є якісь загальні правила пальців для використання або функцій статичного методу, або рівня модуля? Які конкретні переваги чи недоліки вони мають (наприклад, майбутнє розширення, зовнішнє розширення, читабельність)? Якщо можливо, також наведіть приклад справи.