On Friday, January 23, 2015 at 11:35:49 PM UTC+5:30, Ian wrote: > On Fri, Jan 23, 2015 at 10:03 AM, Rustom Mody 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
‼Perfect‼ For the OP you may like to read the following: [And if you dont short version is use __bool__ in python3 __nonzero__ in python2 ] http://stackoverflow.com/questions/8909932/how-to-overload-pythons-bool-method http://stackoverflow.com/questions/2233786/overriding-bool-for-custom-class https://docs.python.org/2/reference/datamodel.html#object.__nonzero__ -- https://mail.python.org/mailman/listinfo/python-list