[Python-Dev] Namespaces

Aahz aahz@pythoncraft.com
Sat, 6 Apr 2002 09:31:48 -0500


On Sat, Apr 06, 2002, Martin v. Loewis wrote:
> Aahz <aahz@pythoncraft.com> writes:
>> 
>>     Rebinding a <foo> does not affect the originally bound object
>>     (unless the originally bound object's reference count goes to zero).
>> 
>> Any ideas about what to call <foo>?  (Calling it a binding sounds a
>> little too self-referential.)
> 
> That is a "name".

<nod>  I'm willing to go along with that if others agree.

>>> Furthermore, some attributes live in multiple namespaces. Given
>>> 
>>>   obj.name
>>> 
>>> what namespace is considered to find the name? NOT the namespace of
>>> obj, alone - Python also considers the namespace of obj's class (if
>>> obj is an instance), of the base classes, etc. OTOH,
>>> 
>>>   obj.name = None
>>> 
>>> modifies the namespace of obj (unless name is a computed attribute).
> 
> I'm saying that name lookup considers multiple namespaces in some
> cases:
> 
>>>> class X:
> ...   name = 1
> ...
>>>> x.name
> 1
>>>> x.__dict__.has_key("name")
> 0

You left out x=X()?

> So saying that x.name yields the value from searching the name in the
> namespace of x is wrong.

Sure, no argument here.  Right now, I'm trying to settle the issue of
creating bindings before getting into the topic of namespace lookups.
-- 
Aahz (aahz@pythoncraft.com)           <*>         http://www.pythoncraft.com/

"There are times when effort is important and necessary, but this should
not be taken as any kind of moral imperative."  --jdecker