Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa 'TypeError: method() mengambil 1 hujah kedudukan tetapi 2 telah diberikan' Berlaku Walaupun dengan Satu Hujah Eksplisit?
"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")
diterjemahkan di sebalik tabir kepada:
MyClass.method(my_object, "foo")
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)
Menghiasi kaedah dengan staticmethod() menghapuskan keperluan untuk parameter diri, membolehkan anda memanggil kaedah secara terus tanpa merujuk objek:
my_other_object.method("foo")
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!