Rumah >pembangunan bahagian belakang >Tutorial Python >AttributeError: Bagaimana untuk menyelesaikan objek Python tidak mempunyai ralat atribut?
Dalam pengaturcaraan Python, AttributeError ialah ralat biasa yang biasanya berlaku pada objek. Ini bermakna objek itu tidak mempunyai sifat atau kaedah tertentu. Ralat jenis ini biasanya berpunca daripada ralat ejaan, nama pembolehubah yang salah atau jenis objek yang tidak sepadan dalam kod. Dalam artikel ini, kami akan memperkenalkan punca dan penyelesaian AttributeError.
Punca utama AttributeError adalah cuba mengakses harta atau kaedah yang tidak wujud pada objek. Ini mungkin disebabkan oleh kesilapan menaip, nama pembolehubah yang salah atau jenis objek yang tidak sepadan. Sebagai contoh, dalam kod Python berikut, percubaan dibuat untuk mengakses atribut bernama "warna", tetapi ia tidak wujud dalam objek:
#定义一个名为Car的类 class Car: def __init__(self, brand, model, year): self.brand = brand self.model = model self.year = year mycar = Car("Toyota", "Camry", 2021) print(mycar.color)
Kod di atas menghasilkan ralat berikut:
AttributeError: 'Car' object has no attribute 'color'
AttributeError dihadapi Apabila ralat berlaku, anda perlu melakukan langkah berikut untuk menyelesaikannya:
2.1 Semak semula ejaan anda
Mula-mula, pastikan nama sifat atau kaedah dieja dengan betul. Dalam contoh di atas, baris kod yang salah hendaklah:
print(mycar.colour)
bukannya:
print(mycar.color)
Selagi ejaannya betul, Python boleh mencari dan menggunakan sifat atau kaedah objek.
2.2 Sahkan jenis objek
Setiap objek dalam Python tergolong dalam jenis tertentu. Untuk sesetengah objek, hanya sifat dan kaedah jenis tertentu tersedia. AttributeError berlaku jika anda cuba mengakses harta atau kaedah pada objek daripada jenis yang salah. Sebagai contoh, pertimbangkan kod berikut:
x = 5 print(x.append(6))
Kod di atas menghasilkan ralat berikut:
AttributeError: 'int' object has no attribute 'append'
Dalam kes ini, objek jenis int tidak mempunyai sifat atau kaedah bernama "tambah".
2.3 Tentukan sama ada tika itu telah dimulakan
Apabila mencipta objek kelas, anda perlu menggunakan pembina untuk memulakan objek. Jika anda terlupa untuk memulakan objek, atau terlupa memberikan nilai untuk semua parameter yang perlu dilalui, AttributeError akan berlaku. Sebagai contoh, pertimbangkan kod berikut:
class Person: def __init__(self, name, age): self.name = name self.age = age p = Person('John') print(p.age)
Kod di atas menghasilkan ralat berikut:
TypeError: __init__() missing 1 required positional argument: 'age'
Dalam kes ini, pembina memerlukan dua parameter (nama dan umur), tetapi hanya nama yang diberikan dengan nilai, jadi AttributeError dicetuskan.
2.4 Periksa sama ada objek telah berubah
Dalam sesetengah kes, apabila kod cuba mengakses sifat atau kaedah pada objek, objek mungkin telah ditukar atau objek mungkin telah diganti. Jika atribut atau kaedah tidak ditemui, ini mungkin punca AttributeError. Sebagai contoh, pertimbangkan kod berikut:
class Dog: def __init__(self, name, breed, age): self.name = name self.breed = breed self.age = age dog1 = Dog("Buddy", "Labrador Retriever", 5) dog1.bark() dog1 = Dog("Rex", "German Shepherd", 3) dog1.bark()
Dalam kod di atas, kali pertama objek digunakan, ia telah mentakrifkan kaedah yang dipanggil "kulit kayu". Walau bagaimanapun, apabila kod menggantikan objek ini dengan objek Anjing baharu, objek itu kini tidak lagi mempunyai kaedah "kulit kayu".
2.5 Gunakan fungsi dir() untuk melihat sifat objek
Akhir sekali, anda boleh menggunakan fungsi dir() untuk melihat senarai sifat objek. dir() mengembalikan senarai yang mengandungi semua sifat objek dan kaedahnya. Senarai ini boleh membantu anda menyelesaikan ralat AttributeError dengan cara yang cekap. Sebagai contoh, dalam contoh di atas, anda boleh menggunakan fungsi dir() untuk melihat senarai atribut objek:
class Car: def __init__(self, brand, model, year): self.brand = brand self.model = model self.year = year mycar = Car("Toyota", "Camry", 2021) print(dir(mycar))
Kod di atas akan mencetak senarai atribut objek, termasuk atribut yang ditakrifkan oleh Python, seperti "__class__" dan " __delattr__".
Ringkasnya, AttributeError mungkin muncul di banyak tempat dalam pengaturcaraan Python, tetapi ia boleh diselesaikan menggunakan penyelesaian di atas. Semasa menyelesaikan masalah, pastikan anda menyemak perkara seperti ejaan, jenis objek, permulaan dan menukar objek. Menggunakan fungsi dir() untuk melihat senarai harta objek juga merupakan penyelesaian yang berkesan.
Atas ialah kandungan terperinci AttributeError: Bagaimana untuk menyelesaikan objek Python tidak mempunyai ralat atribut?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!