Adding a field to a 'foreign' object from the outside

Diez B. Roggisch deets at nospam.web.de
Fri Jan 23 02:25:40 EST 2009


atleta schrieb:
>   Hi,
> 
> I'm working with a callback API (a DBus one) and I'd need to store
> some state between the calls somewhere. I know that it's possible to
> extend an object with fields after creation, so I could just store my
> data in the session object that is passed in with every callback.
> However it stinks from OO perspective, at least to me. The other
> option, something that I'd do in java for example, would be to set up
> a mapping (a dict) using the session object as a key. Which one is the
> 'pythonic' way? Do you use the first method (modifying an object that
> you don't even control the source of) or do you write a bit more code
> and go with the second one?

For me, the first one. Creatin a mapping is cumbersome, opens up all 
kinds of questions like "how to remove stale entries" and is a level of 
indirection that one has to be aware of.

The session object is obviously intended to be that - a storage for 
information persistent over the course of the actions working with it. 
So - use it.

Python is dynamic. Use that dynamicity. The java & C++-guys would do it 
- if they could.

Diez



More information about the Python-list mailing list