can I query an instance for its name?

Luc Lefebvre lefebvre at med.mcgill.ca
Mon Oct 2 10:35:52 EDT 2000


Hi Emile,

Very interesting.  Thank you very much.

cheers.


In article <8r5a1p$h19dh$1 at ID-11957.news.cis.dfn.de>, "Emile van Sebille"
<emile at fenx.com> wrote:
> Luc,
> 
> There are many ways that this can be kludged, and certainly no
> recommended way.  That's probably why no other posts specifically
> addressed your question.  It gets muddier though, as the memory location
> storing the instance can be pointed at and known by many different
> names.  What you may want is buried in the traceback, and can be
> extracted.
> (Don't go there).  It's probably best to build whatever
> trace/name capabilities you're looking for into the __init__ of your
> classes.
> 
> That said, here is one more deficient way to *guess*:
> 
> 
> def who(var, lcls, glbls):
>     varid = id(var) for d in [lcls, glbls]:
>         for k in d.keys():
>             if id(d[k]) == varid:
>                 return "%s is an instance of class %s" % (k,
> d[k].__class__.__name__)
> 
> class test:
>     pass
> 
> class test1:
>     def who(self, lcls):
>         return who(self, lcls, globals())
> 
> tvar = test() print who(tvar, locals(), globals())
> 
> tvar = test1() print tvar.who(locals()) avar = tvar print
> tvar.who(locals())
> 
> 
> Ducking-the-expected-seasoned-reproach-ly y'rs,
> 
> --
> 
> Emile van Sebille emile at fenx.com
> -------------------
> 
> 
> "Luc Lefebvre" <luc at B57-90.python.org> wrote in message
> news:mailman.970327546.5142.python-list at python.org...
>> Hi Bjorn,
>>
>> I would like to see:
>>
>> >>> x.who() x is an instance of class foo
>>
>> --
>> Luc Lefebvre
>>
>> Open Source, a strategic choice for mission-critical applications
>>
>> Key fingerprint = D2E5 5E35 B910 6F4E 0242  EC63 0FD9 96D0
> C7F4 784E
>> On Fri, 29 Sep 2000, Bjorn Pettersen wrote:
>>
>> > so if I do:
>> >
>> >  x = foo() y = x y.who()
>> >
>> > what should it print?
>> >
>> > -- bjorn
>> >
>> > Luc Lefebvre wrote:
>> > >
>> > > Hi,
>> > >
>> > > <\newbie alert on>
>> > >
>> > > I have been attempting to get access to instance
> names, eg:
>> > >
>> > > class foo:
>> > >         def __init__(self):
>> > >                 pass
>> > >
>> > >         def who(self):
>> > >                 print "%s is an instance of class %s"
> % (self.????, self.__class__)
>> > >
>> > > if __name__=="__main__":
>> > >         x=foo() x.who() # would expect "x is an instance of
> class foo"
>> > >
>> > > Also, is there a way to enquire as to a given classes
> children eg: foo.__children__?
>> > >
>> > > <\newbie alert off>
>> > > tia
>> > >
>> > > --
>> > > http://www.python.org/mailman/listinfo/python-list
>> >
>>
>>
> 
> 





More information about the Python-list mailing list