On Friday, July 28, 2017 at 1:45:46 PM UTC+5:30, Ben Finney wrote: > Ethan Furman writes: > > > class X(Enum): > > Falsey = 0 > > Truthy = 1 > > Fakey = 2 > > def __bool__(self): > > return bool(self.value) > > I am surprised this is not already the behaviour of an Enum class, > without overriding the ‘__bool__’ method. > > What would be a good reason not to have this behaviour by default for > ‘Enum.__bool__’? (i.e. if this were reported as a bug on the ‘enum.Enum’ > implementation, what would be good reasons not to fix it?)
<just_a_guess> Enums are for abstracting away from ints (typically small) to more meaningful names. In python's terms that means whether X.Truthy should mean 0 — the value — or "Truthy" — the name — is intentionally left ambiguous/undecided. Observe: >>> print (X.Truthy) X.Truthy # So Truthy is well Truthy >>> X.Truthy <X.Truthy: 1> # No! Truthy is 1 # In other words >>> repr(X.Truthy) '<X.Truthy: 1>' >>> str(X.Truthy) 'X.Truthy' >>> </just_a_guess> -- https://mail.python.org/mailman/listinfo/python-list