On 05/12/2013 04:49 PM, Raymond Hettinger wrote: > After the long design effort for the enum module, > I'm sure there will be a forthcoming effort to apply > them pervasively throughout the standard library. I'd like to apply them where it makes sense. It would be a good way for me to learn all that's in the stdlib while doing something modestly useful. > For internal constants such as those in idlelib and regex, > the user won't see any benefit at all. Devs are users, too! If it makes our lives easier, then, ultimately, it will make our users lives easier as well. >But there will be > a cost in terms of code churn, risk of introducing errors > in stable code, modestly slowing-down the code, making > it more difficult to apply bug fixes across multiple versions > of Python, and increased code verbosity (i.e. changing > "if direction=LEFT: ..." to "if direction is Direction.LEFT: ...") There is no need for increased verbosity, as Enums support __eq__ as well: class Direction(Enum): LEFT = 1 RIGHT = 2 UP = 3 DOWN = 4 globals.update(Direction.__members__) direction = ... if direction == LEFT: ... > For external constants, some thought needs to be given to: > * is the current API working just fine (i.e. decimal's ROUND_DOWN) just fine? or working great? > * will enums break doctests or any existing user code doctests rely on repr's, don't they? Then yes. User code? I would think only if the user was relying on a repr or str of the value. At any rate, that's why this isn't going in until 3.4. > * will it complicate users converting from Python 2 I would hope it would simplify; I'll backport a 2.x version, though, so anyone interested can play with it. > * do users now have to learn an additional concept I don't think enumerations would be a new concept to a computer programmer. > * does it complicate the module in any way A little bit of setup at the top, but then it should be easier everywhere else. > I'm hoping that enums get used only in cases where they > clearly improve the public API (i.e. cases such as sockets > that have a large number of integer constants) rather > than having a frenzy of every constant, everywhere getting > turned into an enum. > > I would like to see enums used as tool for managing complexity, > rather than becoming a cause of added complexity by being used > for every problem, the tall and small, even where it is not needed at all. I will certainly ask for advice on which modules to spend my time on. I know enums are not a cure-all, but they are great for debugging and interactive work. I don't know about you, but I sure spend a lot of time in those two places. -- ~Ethan~
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