Untuk Python versi 3.10 dan ke atas, memanggil kaedah statik dari dalam badan kelas adalah mudah. Walau bagaimanapun, untuk versi 3.9 dan lebih awal, ini menimbulkan cabaran.
Apabila cuba memanggil kaedah statik dari dalam badan kelas, anda mungkin menghadapi ralat berikut:
TypeError: 'staticmethod' object is not callable
Ralat ini berlaku kerana kaedah statik, apabila diisytiharkan menggunakan penghias kaedah statik, menjadi deskriptor. Deskriptor mengikat kelas dan bukannya contoh, menjadikannya tidak boleh diakses dari dalam badan kelas.
Satu penyelesaian ialah mengakses fungsi mentah asal melalui atribut __func__ bagi objek kaedah statik:
<code class="python">class Klass(object): @staticmethod def stat_func(): return 42 _ANS = stat_func.__func__() # call the staticmethod def method(self): ret = Klass.stat_func() return ret</code>
<code class="python">class Klass(object): @staticmethod def stat_func(): return 42 def method(self): ret = Klass.stat_func() return ret</code>
Atas ialah kandungan terperinci Bagaimana untuk Memanggil Kaedah Statik Kelas dari dalam Badan Kelas dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!