Apabila cuba memanggil kaedah dalam Python, pembangun mungkin menghadapi mesej ralat yang membingungkan, "TypeError : method() mengambil 1 hujah kedudukan tetapi 2 diberikan." Ralat ini boleh membingungkan, terutamanya apabila hanya satu hujah yang dihantar kepada kaedah.
Di sebalik tabir, Python mentafsirkan panggilan kaedah sebagai:
class_name.method(object, argument)
Ini ialah mekanisme yang membenarkan kaedah untuk bekerja dengan mudah dengan objek yang mereka bertindak. Dalam takrif kaedah, hujah pertama secara konvensional dinamakan diri, yang merujuk kepada contoh objek.
Pertimbangkan contoh berikut:
class MyClass: def method(self, arg): print(self) print(arg) my_object = MyClass() my_object.method("foo")
Apabila dilaksanakan, kod di atas diterjemahkan kepada:
MyClass.method(my_object, "foo")
Ini menjelaskan mengapa kaedah itu mengambil dua hujah, walaupun hanya satu yang diluluskan secara eksplisit oleh pemanggil.
Untuk meredakan kekeliruan ini, pembangun boleh menggunakan penghias kaedah static() pada kaedah yang tidak memerlukan akses kepada objek yang terikat kepada mereka. Dengan cara ini, kaedah akan berkelakuan seperti fungsi biasa, menghapuskan keperluan untuk hujah kendiri:
class MyOtherClass: @staticmethod def method(arg): print(arg) my_other_object = MyOtherClass() my_other_object.method("foo")
Ringkasnya, apabila menghadapi ralat "Kaedah Mengambil 1 Argumen Tetapi 2 Diberi", ingat bahawa dalam Python , kaedah biasanya menerima hujah tersirat tambahan, iaitu objek yang dikaitkan dengannya. Berhati-hati mempertimbangkan tingkah laku ini dan menggunakan penghias apabila perlu boleh mengelakkan kekeliruan dan menyelaraskan kod anda.
Atas ialah kandungan terperinci Mengapa Kaedah Python Saya Menunjukkan 'TypeError: method() mengambil 1 hujah kedudukan tetapi 2 diberikan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!