[Python-Dev] Namespaces

Aahz aahz@pythoncraft.com
Mon, 1 Apr 2002 16:22:32 -0500

On Mon, Apr 01, 2002, Jeremy Hylton wrote:
> I think it's fairly common for people to talk about an object's
> attributes as its namespace.  The language reference does not call
> this a namespace.  In fact, the lang ref doesn't define namespace and
> often uses other words to discuss naming: names, blocks, scopes,
> environment.
> Perhaps namespace is too fuzzy and we should introduce a precise term
> to talk about the attribute "namespace" of an object.

Actually, namespace seems fine and clear to me; what IMO needs
clarification is explicit namespaces (i.e. through object references)
versus implicit/execution-based namespaces (builtin/global/local).  

Which reminds me of another annoyance in that "global" is strictly
speaking "module global".

> The lang ref does say that the namespace of a class definition becomes
> the attribute dictionary of the class.  So "attribute dictionary"
> seems to be preferred to "object namespace" <0.5 wink>.

Yeah, those sound synonymous to me, but four syllables beats seven when
I'm teaching.  ;-)

> Aahz:
>   A> It seems pretty clear to me that f.permissions does not live in
>   A> the local/global/builtins namespace, but it sure lives in f's
>   A> namespace.  Because attributes are names like any other name and
>   A> can be bound to any Python object, I think it lends crucial
>   A> orthogonality to say that attributes live in object namespace.
> Some people will be confused that a function f has two namespaces --
> the namespace for its code object and the namespace for its
> attributes.  This reinforces my sense that we shouldn't use the term
> namespace when we are trying to be precise.  (Or that we need a
> precise definition of namespace and a clear way to disambiguate the
> two kinds of namespaces assocaited with a function.)

I'm fine with "local scope" and "object attributes" to disambiguate
them; I just think it's important that people understand that a name is
a name is a name, and all names live in *some* namespace.

> I'd also like to observe that the language reference doesn't say
> anything about how attributes of objects are resolved.  The tutorial
> says a bit in the chapter on classes, but none of this made it to the
> language reference.
> It would be nice to flesh out these issues in the reference manual.

Well, once we've got this hashed out, it's a SMOW.  ;-)
Aahz (aahz@pythoncraft.com)           <*>         http://www.pythoncraft.com/

Why is this newsgroup different from all other newsgroups?