[Python-Dev] Namespaces

Guido van Rossum guido@python.org
2002年4月06日 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/)

AltStyle によって変換されたページ (->オリジナル) /