Hướng dẫn how do you check if an object has no attribute python? - làm cách nào để kiểm tra xem một đối tượng không có thuộc tính python?
Bạn có thể sử dụng HasAttr () để kiểm tra xem một đối tượng hoặc lớp có thuộc tính trong Python không.hasattr() to check if an object or class has an attribute in Python. Ví dụ: có lớp
Sau đó, bạn có thể sử dụng HasAttr () cho đối tượng
Output:
Và, bạn cũng có thể sử dụng HasAttr () trực tiếp cho lớp
Output: Vì mọi thứ trong Python là một đối tượng và các đối tượng có các thuộc tính (trường và phương thức), nên việc viết các chương trình có thể kiểm tra loại thuộc tính nào mà một đối tượng có. Ví dụ, một chương trình Python có thể mở một ổ cắm trên máy chủ và nó chấp nhận các tập lệnh Python được gửi qua mạng từ máy khách. Khi nhận được tập lệnh mới, chương trình Python phía máy chủ có thể kiểm tra hoặc chính xác hơn các đối tượng, mô-đun và chức năng nội tâm trong tập lệnh mới để quyết định cách thực hiện chức năng, đăng nhập kết quả và các tác vụ hữu ích khác nhau. Hasattr so với Try-ExceptCó hai cách để kiểm tra xem một đối tượng Python có thuộc tính hay không. Cách đầu tiên là gọi hàm tích hợp 2 nếu không. Cách thứ hai là 3 để truy cập một thuộc tính trong một 1 và thực hiện một số chức năng khác nếu một 5 được nâng lên.. And: [Python] >>> thử: ... 'abc'.upper () ... ngoại trừ thuộc tính : .... Sự khác biệt giữa hai phong cách này là gì? 6 thường được gọi là kiểu lập trình Python có tên "Nhìn trước khi bạn nhảy" (LByl) vì bạn kiểm tra xem một đối tượng có thuộc tính hay không trước khi bạn truy cập. Trong khi 7 được gọi là "dễ dàng yêu cầu tha thứ hơn sự cho phép" (EAFP) vì bạn 3 Truy cập thuộc tính trước và yêu cầu tha thứ trong khối 9 thay vì xin phép như 6.Cách nào tốt hơn, sau đó? Chà, cả hai học thuyết đều có những người ủng hộ trung thành và cả hai phong cách dường như rất thành thạo để đối phó với bất kỳ thử thách lập trình trong thế giới thực. Đôi khi, thật hợp lý khi sử dụng LByl nếu bạn muốn đảm bảo một thuộc tính chắc chắn tồn tại và dừng thực thi nếu không. Ví dụ: bạn biết chắc chắn tại một điểm trong chương trình rằng 1 được thông qua sẽ có thuộc tính con trỏ tệp hợp lệ mà mã sau có thể hoạt động. Mặt khác, việc sử dụng EAFP cũng có ý nghĩa nếu bạn biết một thuộc tính có thể không tồn tại tại một số điểm trong quá trình thực hiện chương trình. Ví dụ, một trình phát nhạc không thể đảm bảo tệp MP3 luôn luôn ở cùng một vị trí, bởi vì nó có thể bị xóa, sửa đổi hoặc di chuyển bởi người dùng bất cứ lúc nào. Trong trường hợp này, trình phát nhạc có thể 3 truy cập tệp MP3 trước và thông báo cho người dùng rằng tệp không tồn tại trong khối 9.Hasattr vs __dict__Mặc dù 6 là một hàm tích hợp được thiết kế để kiểm tra xem thuộc tính có tồn tại trong một đối tượng hay không, đôi khi có thể chính xác hơn để kiểm tra 5 của đối tượng cho sự tồn tại của một thuộc tính thay vì thực tế là 6 không quan tâm đến lý do tại sao thuộc tính được gắn vào một đối tượng trong khi bạn có thể muốn biết lý do tại sao một thuộc tính được gắn vào một đối tượng. Ví dụ, một thuộc tính có thể được gắn vào một đối tượng do lớp cha của nó thay vì chính đối tượng.[Python] >>> Lớp A (đối tượng): ... foo = 1 ... >>> Lớp B (a): ... Pass ... >>> B = B () >>> Hasattr ( B, 'foo') Đúng >>> 'foo' trong b .__ dict__ false [/python] Trong mã trước, vì lớp 7 là một lớp con của lớp 8, lớp 7 cũng có thuộc tính "foo". Tuy nhiên, vì "foo" được kế thừa từ 8, 1 không chứa nó. Đôi khi, điều quan trọng là phải biết liệu một thuộc tính đến từ bản thân lớp của một đối tượng hay từ siêu lớp của các đối tượng.Lời khuyên và đề xuất
Khi bạn đã học cách kiểm tra xem một đối tượng có thuộc tính trong Python không, hãy kiểm tra cách lấy thuộc tính từ một đối tượng. |