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~
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to