On Fri, May 1, 2009 at 12:48 PM, Steven D'Aprano <st...@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 -- http://mail.python.org/mailman/listinfo/python-list