2010-08-24 20 views

cevap

13

O (key, value) dizilerini listesini döndürür inspect modülü

ait getmembers özniteliğini kullanın. Varsa obj.__dict__ değerini alır ve obj.__dict__'da karşılık gelen girdi yoksa getattr kullanır. Bu amaç için birkaç satır kod yazmanızı sağlayabilir.

6

Güncelleme

dir daha bunu yapmak için daha iyi yollar vardır. Diğer cevapları gör.

Orijinal Cevap

fp özelliklerini görmek için fonksiyonun dir(fp) inşa kullanın.

+0

büyük teşekkürler, şimdi sadece bunlarla döngü yapabilir ve '' anahtar = nesne [değer] '(print = value) basabilirim. daha iyi bir yolu var mı –

+0

Başka bir işlev beklediğim başka bir yolu düşünemiyorum belki de 'getattr'. –

+1

'Inspect' modülüne bakın. – aaronasterling

16

Tüm nesneyi dökümlemek isterseniz, oldukça basılı bir sürümünü edinmek için pprint modülünü kullanabilirsiniz.

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) 

Düzenleme: Sana 'nesne' neyi kastettiğini yanlış okumuş olabilir - Eğer dicts gibi temel veri yapıları farklı olarak, sınıf örnekleri bakmak isteyen konum, sen inspect modülüne bakmak isteyebilirsiniz yerine.

0

Hiç kimse, bir nesnenin dize olarak temsil edilmesini sağlayan Python'un __str__ yönteminden hiç kimsenin bahsetmediğine şaşırdım. Maalesef, pdb'de otomatik olarak yazdırılmıyor gibi görünüyor.

Bir de bunun için __repr__ kullanabilirsiniz, ancak __repr__ diğer gereksinimleri vardır: Bir kere, sen eval() için __repr__ çıkış gerekiyor.