Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa 'TypeError: method() mengambil 1 hujah kedudukan tetapi 2 telah diberikan' Berlaku Walaupun dengan Satu Hujah Eksplisit?

Mengapa 'TypeError: method() mengambil 1 hujah kedudukan tetapi 2 telah diberikan' Berlaku Walaupun dengan Satu Hujah Eksplisit?

Mary-Kate Olsen
Lepaskan: 2024-12-30 13:25:10
asal
591 orang telah melayarinya

Why Does

"TypeError: method() mengambil 1 hujah kedudukan tetapi 2 diberikan" dengan Hanya Satu Argumen Lulus

Apabila menghadapi ralat "TypeError : method() mengambil 1 hujah kedudukan tetapi 2 diberikan" walaupun hanya meluluskan satu hujah, penting untuk difahami Konvensyen panggilan kaedah Python.

Dalam Python, panggilan kaedah ialah gula sintaksis untuk sintaks yang lebih bertele-tele. Apabila memanggil kaedah pada objek, bahasa menterjemahkan panggilan ke dalam bentuk yang lebih jelas, dengan objek tersebut menjadi hujah pertama kepada kaedah tersebut.

Sebagai contoh, panggilan berikut:

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

diterjemahkan di sebalik tabir kepada:

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

Di sini, hujah pertama (objek_saya) dipanggil parameter diri dalam takrif kaedah. Parameter ini mewakili objek yang kaedah dipanggil.

Dalam kebanyakan kes, kaedah memerlukan akses kepada objek yang mereka panggil. Tetapi kadangkala, anda mungkin mahukan kaedah yang tidak bergantung pada objek yang terikat kepadanya. Dalam kes sedemikian, anda boleh menggunakan fungsi staticmethod() Python untuk menghiasi kaedah:

class MyOtherClass:

    @staticmethod
    def method(arg):
        print(arg)
Salin selepas log masuk

Menghiasi kaedah dengan staticmethod() menghapuskan keperluan untuk parameter diri, membolehkan anda memanggil kaedah secara terus tanpa merujuk objek:

my_other_object.method("foo")
Salin selepas log masuk

Ini menjelaskan sebab ralat yang anda temui menyatakan bahawa dua hujah telah disediakan. Python sedang mentafsir objek yang anda panggil kaedah (cth., my_object dalam contoh asal) sebagai hujah pertama yang tersirat, menyebabkan sejumlah dua hujah diluluskan.

Atas ialah kandungan terperinci Mengapa 'TypeError: method() mengambil 1 hujah kedudukan tetapi 2 telah diberikan' Berlaku Walaupun dengan Satu Hujah Eksplisit?. 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