Dennis Lee Bieber wrote:
> On Tue, 01 Aug 2006 11:09:57 -0500, Kirk Strauser <[EMAIL PROTECTED]>
> declaimed the following in comp.lang.python:
> 
>> Actually, I meant 'b = foo' in this case - I want to find the name of the
>> class that b references, but the name of an instance (which may have zero
>> or many references to it).
>>
>       Pardon... That gives the class object another name, neither of which
> has any precedence over the other.

Not quite exactly. The 'b = foo' statement binds together name b and the
object foo - which in this case happens to be a class. OTOH, class
objects do have a __name__ attribute, which is not impacted by the binding.

>>>>> b = Foo.bar
>>>>> dir(b)
>> ['__call__', '__class__', '__cmp__', '__delattr__', '__doc__', '__get__', 
>> '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', 
>> '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'im_class', 
>> 'im_func', 'im_self']
>>>>> b.__class__
>> <type 'instancemethod'>
>>>>> b.__class__.__name__
>> 'instancemethod'
>>
>> I was sort of hoping that it would print 'Foo'.
> 
>       But... you've just pulled the method "out" of the class
> definition... Without supplying an instance, there is no linkage to a
> class.

Yes there is. Method objects have an im_class attribute, that is a
reference to the class they were 'pulled out' from.


-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to