Hướng dẫn how do you print the attributes of an object in python? - làm thế nào để bạn in các thuộc tính của một đối tượng trong python?
Không. Câu trả lời được nâng cấp nhiều nhất không bao gồm một số loại thuộc tính và câu trả lời được chấp nhận cho thấy cách lấy tất cả các thuộc tính, bao gồm các phương thức và các phần của API không công khai. Nhưng không có chức năng xây dựng hoàn chỉnh tốt cho việc này. Show
Vì vậy, hệ quả ngắn là bạn có thể tự viết, nhưng nó sẽ tính toán các thuộc tính và các mô tả dữ liệu được tính toán khác là một phần của API công khai và bạn có thể không muốn điều đó:
Vấn đề với các câu trả lời khácQuan sát ứng dụng của câu trả lời hiện tại được bỏ phiếu hàng đầu trên một lớp với rất nhiều loại thành viên dữ liệu khác nhau:
Chỉ in:
Bởi vì 2 chỉ trả về 3 của một đối tượng và nó không phải là một bản sao, vì vậy nếu bạn sửa đổi dict được trả về bởi VAR, bạn cũng sẽ sửa đổi 3 của chính đối tượng.
Trả lại:
- Điều này xấu vì Quux là một tài sản mà chúng ta không nên đặt và không nên ở trong không gian tên ... Áp dụng lời khuyên trong câu trả lời hiện đang được chấp nhận (và những người khác) không tốt hơn nhiều:
Như chúng ta có thể thấy, 5 chỉ trả về tất cả (thực sự chỉ là hầu hết) các tên liên quan đến một đối tượng. 6, được đề cập trong các bình luận, tương tự như thiếu sót - nó trả về tất cả các tên và giá trị.Từ lớp họcKhi dạy tôi, học sinh của mình tạo ra một chức năng cung cấp API công khai về ngữ nghĩa của một đối tượng:
Chúng tôi có thể mở rộng điều này để cung cấp một bản sao của không gian tên ngữ nghĩa của một đối tượng, nhưng chúng tôi cần loại trừ 7 không được gán và nếu chúng tôi thực hiện yêu cầu "thuộc tính hiện tại" một cách nghiêm túc, chúng tôi cần loại trừ các thuộc tính được tính toán ( vì chúng có thể trở nên đắt đỏ, và có thể được hiểu là không phải là "hiện tại"):
Và bây giờ chúng tôi không tính toán hoặc hiển thị tài sản, Quux: ________số 8Hãy cẩn thậnNhưng có lẽ chúng ta biết tài sản của chúng ta không đắt tiền. Chúng tôi có thể muốn thay đổi logic để bao gồm chúng. Và có lẽ chúng tôi muốn loại trừ các mô tả dữ liệu tùy chỉnh khác thay thế.custom data descriptors instead. Sau đó, chúng ta cần tùy chỉnh thêm chức năng này. Và vì vậy, có ý nghĩa rằng chúng ta không thể có một chức năng tích hợp mà phép một cách kỳ diệu biết chính xác những gì chúng ta muốn và cung cấp nó. Đây là chức năng mà chúng ta cần để tạo ra chính mình. Sự kết luậnKhông có chức năng tích hợp nào làm điều này, và bạn nên làm những gì phù hợp nhất cho tình huống của bạn.
Các hàm 9, khi được gọi không có đối số, trả về từ điển với bảng ký hiệu cục bộ hiện tại. Nếu một đối tượng được chuyển đến hàm 9, nó sẽ trả về thuộc tính 3 của đối tượng. Nếu đối tượng được cung cấp dưới dạng đầu vào không có thuộc tính 3, 6 sẽ được nâng lên.Trong hướng dẫn này, chúng tôi sẽ xem xét làm thế nào để có được và in một thuộc tính của đối tượng trong Python. In các thuộc tính của một đối tượng trong Python bằng hàm from pprint import pprint class Obj: __slots__ = 'foo', 'bar', '__dict__' def __init__(self, baz): self.foo = '' self.bar = 0 self.baz = baz @property def quux(self): return self.foo * self.bar obj = Obj('baz') pprint(vars(obj)) 8 trong PythonHàm 8 tích hợp, khi được gọi không có đối số, trả về danh sách các tên trong phạm vi cục bộ hiện tại và khi một đối tượng được truyền dưới dạng đối số, nó sẽ trả về danh sách các thuộc tính hợp lệ của đối tượng.Để in các thuộc tính của đối tượng, chúng ta cần chuyển đối tượng đến hàm 8 và in các thuộc tính của đối tượng được trả về bởi đối tượng 8. Chúng ta có thể sử dụng phương pháp 8 của mô-đun 9 để in các thuộc tính theo cách được định dạng tốt. Mã ví dụ dưới đây trình bày cách sử dụng hàm 8 để in các thuộc tính của đối tượng:
Output: 0In các thuộc tính của một đối tượng trong Python bằng hàm from pprint import pprint class Obj: __slots__ = 'foo', 'bar', '__dict__' def __init__(self, baz): self.foo = '' self.bar = 0 self.baz = baz @property def quux(self): return self.foo * self.bar obj = Obj('baz') pprint(vars(obj)) 9 trong PythonCác hàm 9, khi được gọi không có đối số, trả về từ điển với bảng ký hiệu cục bộ hiện tại.Nếu một đối tượng được chuyển đến hàm 9, nó sẽ trả về thuộc tính 3 của đối tượng.Nếu đối tượng được cung cấp dưới dạng đầu vào không có thuộc tính 3, 6 sẽ được nâng lên.Ví dụ về mã dưới đây trình bày cách sử dụng hàm 9 để in các thuộc tính đối tượng trong Python. 1 |