Falsey Enums

Rustom Mody rustompmody at gmail.com
Fri Jul 28 05:00:03 EDT 2017


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>


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /