[Python-ideas] Anonymous namedtuples
Steven D'Aprano
steve at pearwood.info
Tue Apr 19 22:48:11 EDT 2016
More information about the Python-ideas mailing list
Tue Apr 19 22:48:11 EDT 2016
- Previous message (by thread): [Python-ideas] Anonymous namedtuples
- Next message (by thread): [Python-ideas] Anonymous namedtuples
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Tue, Apr 19, 2016 at 08:47:13PM +0000, Joseph Martinot-Lagarde wrote: > > SimpleNamespace is neither a sequence nor a mapping. > > > I don't know the exact definition of a mapping, but to me SimpleNamespace is > like a dict with restricted keys (valid attributes only) and a nicer syntax. > `my_dict["key"]` is roughly equivalent to `my_namespace.key`. That is (I believe) how Javascript and PHP treat it, but they're not exactly the best languages to emulate, or at least not blindly. Attributes and keys represent different concepts. Attributes represent an integral part of the object: dog.tail me.head car.engine book.cover while keys represent arbitrary (or nearly so) data associated with some data collection: books['The Lord Of The Rings'] kings['Henry VIII'] prisoner[239410] colours['AliceBlue'] They don't just use different syntaxes, they have different purposes, and while it is tempting to (mis)use the shorter attribute syntax for key lookups: colours.AliceBlue it is risky to conflate the two. Suppose you have a book called "update" (presumably a book of experimental poetry by somebody who dislikes uppercase letters): books.update Either the key shadows the update method, or the method shadows the book, or you get an error. All of these scenarios are bad. I'd consider giving Python an alternate key-lookup syntax purely as syntactic sugar: colours~AliceBlue # sugar for colours['AliceBlue'] books~update # books['update'] before I would consider adding a standard library class that conflates attribute- and key-lookup. If people want to do this in their own code (and I do see the attraction, even if I think it is a bad idea), so be it, but the standard library shouldn't encourage it. -- Steve
- Previous message (by thread): [Python-ideas] Anonymous namedtuples
- Next message (by thread): [Python-ideas] Anonymous namedtuples
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-ideas mailing list