Computer >> Máy Tính >  >> Lập trình >> Python

Python AttributeError:Hướng dẫn Cách thực hiện

Thuộc tính là các giá trị hoặc hàm được liên kết với một đối tượng, một kiểu dữ liệu hoặc một lớp. Nếu bạn gọi một thuộc tính trên một giá trị có kiểu dữ liệu hoặc lớp không hỗ trợ thuộc tính đó, bạn sẽ gặp phải lỗi AttributeError.

Hướng dẫn này thảo luận về AttributeError là gì và ý nghĩa của nó. Chúng tôi sẽ giới thiệu cho các bạn một ví dụ về AttributeError để bạn có thể tìm hiểu cách sửa lỗi này trong mã của mình.

Python AttributeError là gì?

Một lỗi thuộc tính Python xuất hiện khi bạn cố gắng gọi một thuộc tính của một đối tượng có kiểu không hỗ trợ phương thức đó. Ví dụ:cố gắng sử dụng Python append () phương thức trên một chuỗi trả về lỗi AttributeError vì chuỗi không hỗ trợ append () .

Trong một lớp Python, bạn có thể xác định các phương thức và giá trị được chia sẻ bởi các đối tượng của lớp đó. Đây là lý do tại sao một số người nghĩ về các lớp như bản thiết kế cho các đối tượng.

Gọi một phương thức hoặc một lớp là một cách khác để nói rằng bạn đang tham chiếu đến một thuộc tính của lớp đó. Một cách để nghĩ về một thuộc tính giống như một thuộc tính vật lý của một người. Một số người có đôi mắt xanh. Có người để tóc nhuộm hồng. Đây là tất cả các thuộc tính.

Trong một lớp Python, một thuộc tính có thể là “eye_color”. Thuộc tính này có thể xác định màu mắt của một người. Một thuộc tính cũng có thể là một hàm. Một hàm có tên là changeEyeColor () có thể thay đổi giá trị của “eye_color”.

Các kiểu dữ liệu có các thuộc tính. Ví dụ:bạn có thể sử dụng phương thức join () trong Python để chuyển đổi một chuỗi thành một danh sách. Các đối tượng chuỗi hỗ trợ join () phương pháp.

Nếu bạn cố gắng tham chiếu một hàm hoặc một giá trị không được liên kết với một đối tượng lớp hoặc một kiểu dữ liệu, bạn sẽ gặp phải lỗi AttributeError.

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình đã dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

Ví dụ Python về lỗi thuộc tính

Hãy viết một chương trình kết hợp hai danh sách giày. Hai cửa hàng giày đang tiến hành hợp nhất và muốn tạo danh sách tất cả những đôi giày độc đáo mà họ bán.

Để bắt đầu, hãy xác định một bộ Python chứa những đôi giày từ cửa hàng một, Harrisons Shoes:

harrisons_shoes = {"Nike Air Force 1 07", "Nike Air Max Plus", "Adidas Gazelle"}

Chúng tôi sử dụng dấu ngoặc nhọn để xác định tập hợp của chúng tôi. Tiếp theo, hãy xác định một bộ với tên của những đôi giày được cung cấp bởi cửa hàng hợp nhất với Harrisons. Cửa hàng giày này có tên là Shoe Emporium:

shoe_emporium = {"Adidas Samba", "Adidas Superstar", "Nike Air Max Plus"}

Vì hai tập hợp này là tập hợp, chúng chỉ có thể lưu trữ các giá trị duy nhất. Điều đó có nghĩa là khi chúng tôi thêm chúng lại với nhau, chúng tôi sẽ nhận được một tập hợp không có giá trị trùng lặp.

Để thêm các tập hợp của chúng ta lại với nhau, chúng ta sẽ sử dụng hàm tích hợp có tên là expand ():

harrisons_shoes.extend(shoe_emporium)
print(harrisons_shoes)

Phần mở rộng () phương thức thêm tất cả các đôi giày từ bộ “shoe_emporium” vào bộ “harrisons_shoes”. Chúng tôi sử dụng một Python print () tuyên bố. Điều này cho phép chúng tôi có thể nhìn thấy tất cả các đôi giày trong bộ mới của chúng tôi. Hãy chạy mã của chúng tôi và xem điều gì sẽ xảy ra:

Traceback (most recent call last):
  File "main.py", line 3, in <module>
	harrisons_shoes.extend(shoe_emporium)
AttributeError: 'set' object has no attribute 'extend'

Mã của chúng tôi trả về một AttributeError.

Giải pháp Python AttributeError

Thông báo lỗi của chúng tôi cho chúng tôi biết rằng chúng tôi không thể sử dụng phương thức extension () trên một đối tượng có kiểu dữ liệu là một tập hợp. Điều này là do kéo dài () là một phương pháp danh sách. Nó không được hỗ trợ bởi bộ.

Nếu chúng ta muốn hợp nhất hai tập hợp của mình, chúng ta phải sử dụng một dấu cộng:

harrisons_shoes.update(shoe_emporium)
print(harrisons_shoes)

Thao tác này sẽ thêm nội dung của bộ “shoe_emporium” vào bộ “harrisons_shoes”. Sau đó, chúng tôi in tất cả các giá trị trong bộ “harrisons_shoes” vào bảng điều khiển. Hãy chạy chương trình mới của chúng tôi:

{'Nike Air Force 1 07', 'Adidas Superstar', 'Adidas Samba', 'Nike Air Max Plus', 'Adidas Gazelle'}

Chương trình của chúng tôi trả lại một bộ với tất cả các đôi giày từ hai bộ ban đầu của chúng tôi. Mặc dù có sáu giá trị trong hai bộ ban đầu của chúng tôi, nhưng bây giờ chỉ có năm giá trị. Điều này là do hai trong số các đôi giày giống nhau và các bộ chỉ có thể lưu trữ các giá trị duy nhất.

Chương trình của chúng tôi trả lại một bộ với tất cả các đôi giày từ hai bộ ban đầu của chúng tôi. Mặc dù có sáu giá trị trong hai bộ ban đầu của chúng tôi, nhưng bây giờ chỉ có năm giá trị. Điều này là do hai trong số các đôi giày giống nhau và các bộ chỉ có thể lưu trữ các giá trị duy nhất.

Các lỗi thuộc tính tương tự cần khám phá

Các lỗi thuộc tính rất phổ biến. Chúng có thể phát sinh khi bạn cố gắng gọi các thuộc tính của kiểu dữ liệu và lớp không hỗ trợ thuộc tính mà bạn đang đề cập đến.

Những lỗi này cũng có thể gây ra nếu bạn mắc lỗi đánh máy khi đề cập đến một thuộc tính. Python sẽ diễn giải mã của bạn như hiện tại. Nếu bạn mắc lỗi đánh máy, Python sẽ hiển thị rằng bạn đang đề cập đến một thuộc tính không tồn tại.

Ví dụ:sử dụng Python split () phương pháp tách danh sách là phổ biến. Nhưng, split () là một phương thức chuỗi và vì vậy nó không thể được sử dụng để chia một danh sách.

Để đọc thêm, hãy xem xét nghiên cứu các lỗi sau:

  • AttributeError:Đối tượng "list" không có thuộc tính "split"
  • AttributeError:Đối tượng "module" không có thuộc tính "urlopen"

Kết luận

Lỗi thuộc tính trong Python được đưa ra khi một thuộc tính không hợp lệ được tham chiếu. Để giải quyết những lỗi này, trước tiên hãy kiểm tra xem thuộc tính bạn đang gọi có tồn tại hay không. Sau đó, hãy đảm bảo thuộc tính có liên quan đến đối tượng hoặc kiểu dữ liệu mà bạn đang làm việc.

Nếu thuộc tính bạn muốn được liên kết với một kiểu dựng sẵn và không tồn tại, bạn nên tìm một phương án thay thế. Có những lựa chọn thay thế cho nhiều thuộc tính tồn tại cho một kiểu dữ liệu mà bạn có thể sử dụng trên một kiểu dữ liệu khác. Ví dụ:không có extension () phương thức với các bộ nhưng bạn có thể sử dụng union () tham gia vào nhóm.

Để tìm hiểu thêm về cách viết mã Python, hãy đọc hướng dẫn Cách học Python của chúng tôi.