On 04/26/2013 07:29 PM, Glenn Linderman wrote: > On 4/26/2013 6:22 PM, Greg Ewing wrote: >> Guido van Rossum wrote: >>> If we had access to the syntax used for the definition, this would be >>> simple: assignments define items, def statements define methods. But >>> at run time we only see the final object resulting from the >>> definition, >> >> Another way we could tell the difference is if the def >> statement used a different protocol for making bindings >> than assignment. >> >> Suppose a def statement used in a class body called >> __defitem__, if it exists, instead of __setitem__. Then >> the metaclass would be able to do different things for >> defs and assignments. > > Well, some assignments could be for non-enumeration items, once you start allowing EnumItem in the list. Some method > of grouping enumeration items, or grouping non-enumeration items would solve the problem. > > class Color( Enum ): > Enum.__enumerationItems__( > red=1, > green=2, > blue=3, > ) > # other methods and assignments Or, if we go with the metaclass magic of re-using the class/type name (and who doesn't love metaclass magic??): class Color(Enum): red = Color(1) green = Color(2) blue = Color 3) look_ma_not_an_enum = 4 -- ~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