Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Kaedah Python Saya Menunjukkan 'TypeError: method() mengambil 1 hujah kedudukan tetapi 2 diberikan'?

Mengapa Kaedah Python Saya Menunjukkan 'TypeError: method() mengambil 1 hujah kedudukan tetapi 2 diberikan'?

Susan Sarandon
Susan Sarandonasal
2024-12-13 15:27:10521semak imbas

Why Does My Python Method Show

Memahami Misteri "Kaedah Mengambil 1 Argumen Tetapi 2 Diberi" Ralat

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn