2010-08-24 41 views
16

Tôi chỉ muốn xem nhanh các thuộc tính và giá trị của một đối tượng bằng Python, làm cách nào để thực hiện điều đó trong thiết bị đầu cuối trên máy mac (công cụ rất cơ bản, không bao giờ được sử dụng python)?Python tương đương với "kiểm tra" của Ruby là gì?

Cụ thể, tôi muốn xem những gì message.attachments nằm trong this Google App Engine MailHandler example (hình ảnh, video, tài liệu, v.v.).

Trả lời

13

sử dụng getmembers thuộc tính của mô-đun inspect

Nó sẽ trả về một danh sách các (key, value) tuples. Nó nhận giá trị từ obj.__dict__ nếu có và sử dụng getattr nếu không có mục nhập tương ứng trong obj.__dict__. Nó có thể giúp bạn tiết kiệm từ viết một vài dòng mã cho mục đích này.

6

Cập nhật

Có nhiều cách tốt hơn để làm điều này hơn dir. Xem các câu trả lời khác.

gốc trả lời

Sử dụng được xây dựng trong chức năng dir(fp) để xem các thuộc tính của fp.

+0

tuyệt vời cảm ơn bạn, bây giờ tôi chỉ có thể lặp qua những người đó và in 'key = object [value]' (key = value). Có cách nào tốt hơn? –

+0

Tôi không thể nghĩ ra một cách khác có thể là 'getattr', một hàm khác được xây dựng trong hàm. –

+1

Xem mô-đun 'kiểm tra'. – aaronasterling

16

Nếu bạn muốn đổ toàn bộ đối tượng, bạn có thể sử dụng mô-đun pprint để có phiên bản in đẹp.

from pprint import pprint 

pprint(my_object) 

# If there are many levels of recursion, and you don't want to see them all 
# you can use the depth parameter to limit how many levels it goes down 
pprint(my_object, depth=2) 

Edit: Tôi có thể đã hiểu sai những gì bạn có nghĩa là bằng cách 'đối tượng' - nếu bạn đang muốn nhìn vào trường lớp, như trái ngược với cấu trúc dữ liệu cơ bản như dicts, bạn có thể muốn xem xét các mô-đun inspect thay thế.

0

Tôi ngạc nhiên không ai khác đã đề cập đến phương pháp __str__ của Python, cung cấp một biểu diễn chuỗi của một đối tượng. Thật không may, nó dường như không in tự động trong pdb.

Bạn cũng có thể sử dụng __repr__ cho điều đó, nhưng __repr__ có các yêu cầu khác: một điều, bạn cần có thể eval() đầu ra của __repr__.

Các vấn đề liên quan