Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyelesaikan ralat Python: TypeError: objek 'xxx' tidak boleh dipanggil?

Bagaimana untuk menyelesaikan ralat Python: TypeError: objek 'xxx' tidak boleh dipanggil?

WBOY
WBOYasal
2023-08-19 10:00:456694semak imbas

如何解决Python报错:TypeError: 'xxx' object is not callable?

Bagaimana untuk menyelesaikan ralat Python: TypeError: objek 'xxx' tidak boleh dipanggil?

Dalam bidang pengaturcaraan Python, ralat sering dihadapi. Salah satu ralat biasa ialah TypeError: objek 'xxx' tidak boleh dipanggil. Ralat ini bermakna bahawa objek digunakan dalam kod semasa, tetapi ia dipanggil sebagai fungsi, tetapi sebenarnya objek itu tidak boleh dipanggil. Untuk membantu anda memahami dan menyelesaikan isu ini dengan lebih baik, kami akan menyelami punca ralat ini, cara mengenal pasti dan membetulkannya, berserta beberapa contoh kod.

Mula-mula, mari lihat contoh kod khusus:

class MyClass:
    def __init__(self, x):
        self.x = x
    
    def print_x(self):
        print(self.x)

obj1 = MyClass(10)
obj2 = MyClass(20)

print(obj1())  # 报错发生在这一行

Kod di atas mentakrifkan kelas MyClass, yang mempunyai kaedah permulaan __init__ dan kaedah print_x yang mencetak x. Dalam program utama, kami mencipta dua objek kelas ini, obj1 dan obj2, dan cuba memanggil obj1, tetapi TypeError: objek 'MyClass' tidak boleh dipanggil ralat berlaku.

Pertama sekali, untuk menyelesaikan ralat ini, kita perlu menjelaskan punca ralat tersebut. TypeError: objek 'xxx' tidak boleh dipanggil biasanya bermakna kami cuba memanggil objek yang tidak boleh dipanggil. Dalam contoh kod di atas, kami cuba memanggil objek obj1, tetapi objek ini adalah contoh kelas MyClass dan ia tidak direka untuk dipanggil. Oleh itu, Python akan membuang ralat ini.

Sekarang kita faham punca ralat ini, langkah seterusnya ialah cara mengenal pasti dan membetulkannya. Terdapat beberapa situasi biasa:

  1. Penggunaan contoh kelas yang salah: Dalam contoh kod di atas, kami cuba memanggil objek obj1, tetapi sebenarnya kaedah kelas yang menjadi milik objek itu harus dipanggil. Oleh itu, kita boleh mengubah suai kod di atas kepada obj1.print_x().
class MyClass:
    def __init__(self, x):
        self.x = x
    
    def print_x(self):
        print(self.x)

obj1 = MyClass(10)
obj2 = MyClass(20)

obj1.print_x()  # 输出10
  1. Tersilap mengelirukan nama pembolehubah dengan nama fungsi: Satu lagi situasi biasa ialah mengelirukan nama kaedah kelas dengan nama pembolehubah instance, mengakibatkan salah memanggil pembolehubah instance sebagai fungsi. Sebagai contoh, kod berikut akan menyebabkan ralat TypeError: objek 'int' tidak boleh dipanggil.
class MyClass:
    def __init__(self, x):
        self.x = x
    
    def print_x(self):
        print(self.x)

obj1 = MyClass(10)
obj2 = MyClass(20)

print(obj1.x())  # 报错发生在这一行

Untuk menyelesaikan masalah ini, kita perlu mengubah suai kod untuk memisahkan nama pembolehubah dan nama fungsi:

class MyClass:
    def __init__(self, x):
        self.x = x
    
    def print_x(self):
        print(self.x)

obj1 = MyClass(10)
obj2 = MyClass(20)

print(obj1.x)  # 输出10

Akhir sekali, untuk lebih memahami dan mengelakkan ralat ini, kami memberikan contoh kod yang lain.

def add(a, b):
    return a + b

result = add(3, 5)
print(result())

# 报错的原因是result是一个int类型的变量,而不是函数

Di sini, kami mentakrifkan fungsi tambah yang menerima dua parameter dan mengembalikan jumlahnya. Kemudian kami menetapkan hasil add(3, 5) kepada hasil dan cuba mencetak result(). Walau bagaimanapun, kami menemui TypeError: objek 'int' bukan ralat boleh dipanggil. Untuk menyelesaikan masalah ini, kami hanya perlu mengalih keluar kurungan:

def add(a, b):
    return a + b

result = add(3, 5)
print(result)  # 输出8

Melalui contoh kod di atas, kami berharap dapat membantu semua orang memahami dan menyelesaikan ralat Python biasa TypeError: objek 'xxx' tidak boleh dipanggil dengan berkesan. Apabila ralat ini berlaku, sila semak sama ada masalah yang dinyatakan di atas wujud dalam kod anda dan laraskan kod dengan sewajarnya untuk mengelakkan ralat yang serupa.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat Python: TypeError: objek 'xxx' tidak boleh dipanggil?. 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