Falsey Enums
Pavol Lisy
pavol.lisy at gmail.com
Sat Jul 29 03:37:20 EDT 2017
More information about the Python-list mailing list
Sat Jul 29 03:37:20 EDT 2017
- Previous message (by thread): Falsey Enums
- Next message (by thread): Getting a dictionnary from a module's variables
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 7/28/17, Steve D'Aprano <steve+python at pearwood.info> wrote: > On Fri, 28 Jul 2017 05:52 pm, Ethan Furman wrote: > >> class X(Enum): >> Falsey = 0 >> Truthy = 1 >> Fakey = 2 >> def __bool__(self): >> return bool(self.value) > > Thanks Ethan. BTW bool at enum seems to be expensive: %timeit 7 if x else 0 850 ns ± 12.9 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) %timeit 7 if x.value else 0 479 ns ± 4.38 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) %timeit 7 if x!=X.Falsey else 0 213 ns ± 10.6 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) > Like Ben, I'm surprised that's not the default behaviour. Me too. I was trying to find some example which is not completely semantically wrong and where backward compatibility is important. Maybe something like this? -> class Color(Enum): black = 0 # this could equal to some external library constant value for black white = 0xff color = user_choice() if not color: # color is None color = random.choice(list(Color))
- Previous message (by thread): Falsey Enums
- Next message (by thread): Getting a dictionnary from a module's variables
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list