[Python-Dev] Namespaces
Guido van Rossum
guido@python.org
Sat, 06 Apr 2002 10:13:17 -0500
> > A = 1 binds 1 to the name "A"
> >
> > A.B = 1 calls A.__setattr__("B", 1)
> >
> > A["B"] = 1 calls A.__setitem__("B", 1)
> >
> > it's pretty clear that the first form differs from the others,
> > but what's the difference between the second and the third
> > form? or are all three name binding operations?
I don't know if it matters for your explanation, but the *big*
difference between A.B and A["B"] is that in the latter, A *is* the
namespace, while in the former, A *has* a namespace (usually, but not
always called A.__dict__). These namespaces are distinct, otherwise
you'd have trouble keeping track of the difference between d["clear"]
and d.clear...
--Guido van Rossum (home page: http://www.python.org/~guido/)