Ini bukan tentang @staticmethod
dan @classmethod
! Saya tahu cara staticmethod
kerjanya. Apa yang ingin saya ketahui adalah kasus penggunaan yang tepat untuk @staticmethod
fungsi tingkat modul.
Saya telah menelusuri pertanyaan ini di Google, dan tampaknya ada beberapa kesepakatan umum bahwa fungsi tingkat modul lebih disukai daripada metode statis karena lebih pythonic. Metode statis memiliki keuntungan terikat pada kelasnya, yang mungkin masuk akal jika hanya kelas itu yang menggunakannya. Namun, dalam fungsi Python biasanya diatur oleh modul bukan kelas, jadi biasanya membuatnya menjadi fungsi modul juga masuk akal.
Metode statis juga dapat ditimpa oleh subclass, yang merupakan keuntungan atau kerugian tergantung pada bagaimana Anda melihatnya. Meskipun, metode statis biasanya "murni secara fungsional" sehingga mengesampingkannya mungkin tidak pintar, tetapi kadang-kadang mungkin nyaman (meskipun ini mungkin salah satu dari "nyaman, tapi TIDAK PERNAH MELAKUKANNYA" "hal-hal yang hanya bisa diajarkan oleh pengalaman kepada Anda).
Apakah ada aturan umum untuk menggunakan fungsi metode statis atau modul-level? Apa keuntungan atau kerugian konkret yang mereka miliki (mis. Ekstensi di masa depan, ekstensi eksternal, keterbacaan)? Jika memungkinkan, berikan juga contoh kasus.