[Python-Dev] Namespaces
Aahz
aahz@pythoncraft.com
Fri, 5 Apr 2002 19:47:06 -0500
[After going away and thinking about this for a few days...]
On Tue, Apr 02, 2002, Martin v. Loewis wrote:
> Aahz <aahz@pythoncraft.com> writes:
>>
>> 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.
>
> That isn't really true: a computed attribute lives in no namespace,
> instead, some function is invoked to determine the attribute value.
You're right, though I think I prefer "computed binding" to "computed
attribute" (assuming you're referring to the __getitem__ / __setitem__
protocol). The question I'm now wrestling with is what to call
bindings in general. I'm tripping over this:
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.)
> 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).
Exactly. Binding operations are different from binding lookups. I'm
not sure I understand your unless, though; can you demonstrate with
code?
--
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