Getting a dictionary from an object

Bruno Desthuilliers bdesth.quelquechose at free.quelquepart.fr
Sun Jul 24 12:57:28 EDT 2005


Steven D'Aprano a écrit :
> On Sun, 24 Jul 2005 12:03:47 +0300, Thanos Tsouanas wrote:
>>
>>Please, tell me, how would you print it in my case?
>  
> If I have understood you, you have some object like such:
> 
> obj.foo = 1
> obj.bar = 2
> obj.spam = 'a'
> obj.eggs = 'b'
> 
> say.
> 
> You want to use it something like this:
> 
> print "My object has fields %(foo)s; %(bar)s; %(spam)s; %(eggs)s." % obj
> 
> except that doesn't work. So I would simply change the reference to obj to
> obj.__dict__ and it should do exactly what you want.

Nope, it doesn't work with computed attributes (properties, descriptors, 
...).

The most obvious solution is the decorator pattern - which is somewhat 
the op was trying to do.

Another solution is to dynamically add a __getitem__ method to obj 
before using'em that way, either by setting explicitly the method as an 
attribute of the object's class or by using the import_with_metaclass() 
trick from David Mertz.

(snip)

> It really does help to explain what your functional requirements are,
> instead of focusing on one, possibly pointless, implementation.
> 
+1 on this !-)



More information about the Python-list mailing list