On Mon, Apr 01, 2002, Martin v. Loewis wrote: > Aahz <aahz@pythoncraft.com> writes: >> >> Well, no. First-level names, yes, but each object itself is a >> namespace, so every name will be bound to an object that can contain >> names. To use my favorite example: >> >> def f(): >> pass >> >> f.permissions = 'author' > > Except that those are not names, they are attributes. Namespaces > nest, in Python; permissions does not live in namespace, which becomes > obvious if you try to nest it > > def f(): > return permissions > > f.permissions = 'author' > print f() > > Traceback (most recent call last): > File "a.py", line 5, in ? > print f() > File "a.py", line 2, in f > return permissions > NameError: global name 'permissions' is not defined You're only correct if you define namespaces as being the set of nested first-level lookups. If you define "attribute" as "name bound to an object namespace", then we're pretty much in agreement. We certainly talk often enough of module namespaces; I think it makes sense to expand that usage to all objects. It seems pretty clear to me that f.permissions does not live in the local/global/builtins namespace, but it sure lives in f's namespace. Because attributes are names like any other name and can be bound to any Python object, I think it lends crucial orthogonality to say that attributes live in object namespace. -- Aahz (aahz@pythoncraft.com) <*> http://www.pythoncraft.com/ Why is this newsgroup different from all other newsgroups?
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4