On Fri, Jan 23, 2015 at 10:03 AM, Rustom Mody <rustompm...@gmail.com> wrote: > On Friday, January 23, 2015 at 10:22:06 PM UTC+5:30, Ian wrote: >> On Fri, Jan 23, 2015 at 8:31 AM, Rustom Mody wrote: >> > Can you tell me what of the following code does not satisfy your >> > requirements? >> > [Needs python 3.4] >> > >> > >> >>>> from enum import IntEnum >> >>>> class B4(IntEnum): >> > F1 = 0 >> > F2 = 0 >> > F3 = 0 >> > T = 1 >> >> This strikes me as a potential problem: >> >> >>> B4.F1 is B4.F2 is B4.F3 >> True >> >>> list(B4) >> [<B4.F1: 0>, <B4.T: 1>] >> >> Enum members with the same values are just aliases for one another, >> not distinct entities. > > Yeah.... > > The only workaround I have been able to come up with is: > > class B4(IntEnum): >> F1 = 0 >> F2 = "" >> F3 = None >> T = 1 > > which is not bad; its ridiculous > [Like going around with a broken broom searching for falsey objects :-) ]
How about something like this: >>> from enum import Enum >>> class B4(Enum): ... F1 = (False, 1) ... F2 = (False, 2) ... F3 = (False, 3) ... T = (True, 4) ... def __bool__(self): ... return self.value[0] ... >>> B4.F1 is B4.F2 False >>> bool(B4.F1) False >>> bool(B4.T) True -- https://mail.python.org/mailman/listinfo/python-list