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
Lepaskan: 2024-12-13 15:27:10
asal
542 orang telah melayarinya

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)
Salin selepas log masuk

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")
Salin selepas log masuk

Apabila dilaksanakan, kod di atas diterjemahkan kepada:

MyClass.method(my_object, "foo")
Salin selepas log masuk

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")
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan