[Tutor] introspection

Alex Kleider akleider at sonic.net
Wed Apr 22 03:12:47 CEST 2015


On 2015-04-21 16:38, Ben Finney wrote:

> That hope is understandable.
> 
Your "understanding" is appreciated.

> It is also easy to be confused ....

So true, but with the help of "Python Tutors" things are being 
rectified!

about why such a feature doesn't exist;

> So why not arbitrary objects?
> 

> The answer is that functions, classes, and modules are all *defined*,
> and (normally) have exactly one canonical name established at 
> definition
> time.
> 
> Arbitrary objects are merely *instantiated*, without that definition
> step. Quite commonly they are used with no name bound to them; so the
> behaviour of most objects does not have ‘__name__’ in the API.
> 
> If you would like to make a class that has that attribute on all its
> instances, feel free. But you need to figure out how the instance
> detects its own name!
> 
>     class LockeanThing:
>         """ An object that knows the name by which others refer to it. 
> """
> 
>         def __init__(self):
>             self.__name__ = ???
> 
>> But I see what I think you and others have been trying to explain to
>> me: that the expression some_object.__name__, if it existed, would
>> indeed be schizophrenic since it would be an attribute of the object,
>> not the name(s) to which it is bound.
> 
> That's why I prefer to be clear that the binding operation is one-way
> only.
> 
> A reference (such as a name) is bound to an object, the object is not
> bound to the reference — indeed, the object knows nothing about that
> relationship.

It's sinking in.  Thank you.
ak


More information about the Tutor mailing list