Non si tratta di @staticmethod
e @classmethod
! So come staticmethod
funziona. Quello che voglio sapere sono i casi d'uso corretti per @staticmethod
una funzione a livello di modulo.
Ho cercato su Google questa domanda, e sembra che ci sia un accordo generale sul fatto che le funzioni a livello di modulo sono preferite rispetto ai metodi statici perché è più pitonica. I metodi statici hanno il vantaggio di essere legati alla sua classe, il che può avere senso se solo quella classe la usa. Tuttavia, in Python la funzionalità è di solito organizzata per modulo non per classe, quindi di solito ha senso anche una funzione di modulo.
I metodi statici possono anche essere sovrascritti da sottoclassi, il che è un vantaggio o uno svantaggio a seconda di come lo si guarda. Sebbene i metodi statici di solito siano "funzionalmente puri", quindi ignorarli potrebbe non essere intelligente, ma a volte può essere conveniente (anche se questo può essere uno di quei tipi di "conveniente, ma MAI FATTO" che solo l'esperienza può insegnarti).
Esistono regole generali per l'uso di metodi statici o di funzioni a livello di modulo? Quali vantaggi o svantaggi concreti hanno (ad esempio estensione futura, estensione esterna, leggibilità)? Se possibile, fornire anche un esempio di caso.