[Python-Dev] PEP 435: initial values must be specified? Yes

Tim Delaney timothy.c.delaney at gmail.com
Tue May 7 04:58:42 CEST 2013


On 7 May 2013 12:29, Ethan Furman <ethan at stoneleaf.us> wrote:

> On 05/05/2013 02:55 PM, Tim Delaney wrote:
>
>>
>> So long as I can get one of the requirements documented to implement an
>> auto-number syntax I'll be happy enough with
>> stdlib enums I think.
>>
>> class Color(AutoIntEnum):
>>      red = ...
>>      green = ...
>>      blue = ...
>>
>>
> Will this do?
>
>     class AutoNumber(Enum):
>         def __new__(cls):
>             value = len(cls.__enum_info__) + 1
>             obj = object.__new__(cls)
>             obj._value = value
>             return obj
>         def __int__(self):
>             return self._value
>     class Color(AutoNumber):
>         red = ()
>         green = ()
>         blue = ()


Considering that doesn't actually work with the reference implementation
(AutoNumber.__new__ is never called) ... no.

print(Color.red._value)
print(int(Color.red))

---------- Run Python3 ----------
()
Traceback (most recent call last):
  File "D:\home\repos\mercurial\ref435\ref435.py", line 292, in <module>
    print(int(Color.red))
TypeError: __int__ returned non-int (type tuple)

Plus I would not want to use the empty tuple for the purpose - at least ...
implies something ongoing.

Tim Delaney
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20130507/eadfbe3e/attachment.html>


More information about the Python-Dev mailing list