Getting a dictionary from an object
Mike Meyer
mwm at mired.org
Sat Jul 23 13:50:36 EDT 2005
Steven D'Aprano <steve at REMOVETHIScyber.com.au> writes:
> On Sat, 23 Jul 2005 11:48:27 +0300, Thanos Tsouanas wrote:
>> Hello.
>>
>> I would like to have a quick way to create dicts from object, so that a
>> call to foo['bar'] would return obj.bar.
>
> That looks rather confusing to me. Why not just call obj.bar, since it
> doesn't look like you are actually using the dictionary at all?
Well, I needed exactly this functionality last week. I have a
collection of (rather messy) classes that have a slew of attributes as
values. I would have used a dictionary for this, but I didn't write
the code.
I have to be able to display these objects (in HTML, if it matters),
and have as a requirement that the format string live in a database.
My solution didn't look to different from dictobj. There's some extra
mechanism to fetch the format string from the database, and some
formatting of the attribute based on meta-information in the object,
but it's the same basic idea.
>> class dictobj(dict):
>> """
>> class dictobj(dict):
>> A dictionary d with an object attached to it,
>> which treats d['foo'] as d.obj.foo.
>> """
>> def __init__(self, obj):
>> self.obj = obj
>> def __getitem__(self, key):
>> return self.obj.__getattribute__(key)
>
> I don't think this is particularly useful behaviour. How do you use it?
def __str__(self):
return self._format % self
<mike
--
Mike Meyer <mwm at mired.org> http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.
More information about the Python-list
mailing list