From 4fbf15db4857cd0547a0ac8e25e9370b393d630e Mon Sep 17 00:00:00 2001 From: Mike Lundy Date: Mon, 10 Aug 2015 17:08:45 -0700 Subject: [PATCH] Issue #24840: implement __bool__ for enums --- Lib/enum.py | 3 +++ Lib/test/test_enum.py | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/Lib/enum.py b/Lib/enum.py index c28f345..677b694 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -506,6 +506,9 @@ class Enum(metaclass=EnumMeta): def __reduce_ex__(self, proto): return self.__class__, (self._value_, ) + def __bool__(self): + return bool(self._value_) + # DynamicClassAttribute is used to provide access to the `name` and # `value` properties of enum members while keeping some measure of # protection from modification, while still allowing for an enumeration diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 4b5d0d0..531f012 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -1701,5 +1701,21 @@ class TestStdLib(unittest.TestCase): if failed: self.fail("result does not equal expected, see print above") + def test_normal_boolean_conversion(self): + class Boolean(Enum): + Yep = True + Nope = False + + self.assertIs(bool(Boolean.Yep), True) + self.assertIs(bool(Boolean.Nope), False) + + def test_int_boolean_conversion(self): + class Boolean(IntEnum): + Yep = 1 + Nope = 0 + + self.assertIs(bool(Boolean.Yep), True) + self.assertIs(bool(Boolean.Nope), False) + if __name__ == '__main__': unittest.main() -- 2.5.0