Setuju dengan @jolvi, @ArundasR, dan lainnya, peringatan tersebut terjadi pada fungsi anggota yang tidak digunakan self
.
Jika Anda yakin PyCharm salah, bahwa fungsinya seharusnya tidak menjadi @staticmethod
, dan jika Anda menghargai peringatan nol, Anda bisa membuat yang ini menghilangkan dua cara berbeda:
Solusi # 1
def bar(self):
self.is_not_used()
doing_something_without_self()
def is_not_used(self):
pass
Penanganan masalah # 2 [Terima kasih @ DavidPärsson ]
# noinspection PyMethodMayBeStatic
def bar(self):
doing_something_without_self()
Aplikasi yang saya miliki untuk ini (alasan saya tidak bisa menggunakan @staticmethod) adalah membuat tabel fungsi handler untuk menanggapi bidang subtipe protokol. Semua penangan harus berbentuk kursus yang sama (statis atau tidak statis). Tetapi beberapa tidak melakukan apa-apa dengan instance. Jika saya membuat yang statis saya akan mendapatkan "TypeError: objek 'staticmethod' tidak bisa dipanggil".
Untuk mendukung kekuatiran OP, menyarankan Anda menambahkan metode statis kapan pun Anda bisa, bertentangan dengan prinsip bahwa lebih mudah membuat kode menjadi tidak terlalu ketat nanti, daripada membuatnya lebih banyak - membuat metode statis membuatnya kurang ketat sekarang, karena Anda dapat panggil class.f () alih-alih instance.f ().
Tebak mengapa peringatan ini ada:
- Ini mengiklankan metode statis . Itu membuat pengembang menyadari sesuatu yang mungkin mereka maksudkan.
- Seperti yang ditunjukkan oleh @ JohnWorrall, itu menarik perhatian Anda ketika diri Anda secara tidak sengaja dihilangkan dari fungsi tersebut.
- Ini adalah isyarat untuk memikirkan kembali model objek; mungkin fungsinya tidak termasuk dalam kelas ini sama sekali.
self
mana saja di dalam metode ini? (Jika pertanyaannya benar-benar adalah "mengapa desainer PyCharm mendesain seperti ini ... Anda harus bertanya kepada mereka, bukan SO ...)