object query assigned variable name?
David Stanek
dstanek at dstanek.com
Sat May 2 09:28:31 EDT 2009
On Fri, May 1, 2009 at 12:48 PM, Steven D'Aprano
<steve at remove-this-cybersource.com.au> wrote:
> On Fri, 01 May 2009 09:24:10 -0700, warpcat wrote:
>
>> I'd like it to print, when instanced, something like this:
>>
>>>>> s = Spam()
>> I’m assigned to s!
>>
>> But it seems prohibitively hard (based on my web and forum searches) for
>> an object to know what variable name is has been assigned to when
>> created.
>
> Can't be done. Objects don't know what names they are bound to.
>
While objects don't know what they are assigned to, they can be made
to find out. Unless you have a good use case I don't think that you
really want to be doing it.
DecoratorTools allows you to do this. I have code that allows you to
use a a function like:
class C:
attr = inject(Customer)
The inject function does know that it is being assigned to attr. There
is tracing/frame introspection black magic involved. So much so that I
have been debating removing that feature.
The code is on Bitbucket[1]. It has a little extra complication
because inject can also be used as a decorator. The key is the
decorate_assignment call in the inject function.
Again I don't think you really want to do this.
[1] http://bitbucket.org/dstanek/snake-guice/src/tip/snakeguice/decorators.py
--
David
blog: http://www.traceback.org
twitter: http://twitter.com/dstanek
More information about the Python-list
mailing list