Rumah  >  Artikel  >  pembangunan bahagian belakang  >  AttributeError: Bagaimana untuk menyelesaikan objek Python tidak mempunyai ralat atribut?

AttributeError: Bagaimana untuk menyelesaikan objek Python tidak mempunyai ralat atribut?

PHPz
PHPzasal
2023-06-25 18:51:5414012semak imbas

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.

  1. Punca

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'
  1. Penyelesaian

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!

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