diff -r 967af1815967 Lib/enum.py --- a/Lib/enum.py Mon Sep 09 18:48:24 2013 -0500 +++ b/Lib/enum.py Tue Sep 10 17:06:15 2013 +0800 @@ -257,6 +257,9 @@ def __iter__(cls): return (cls._member_map_[name] for name in cls._member_names_) + def __reversed__(cls): + return (cls._member_map_[name] for name in reversed(cls._member_names_)) + def __len__(cls): return len(cls._member_names_) diff -r 967af1815967 Lib/test/test_enum.py --- a/Lib/test/test_enum.py Mon Sep 09 18:48:24 2013 -0500 +++ b/Lib/test/test_enum.py Tue Sep 10 17:06:15 2013 +0800 @@ -1019,6 +1019,26 @@ blue = 3 grene = 2 + def test_reversed(self): + class PlanetDistanceInAU(Enum): + MERCURY = 0.31 + VENUS = 0.72 + EARTH = 1.00 + MARS = 1.52 + JUPITER = 5.20 + SATURN = 9.54 + URANUS = 19.22 + NEPTUNE = 30.06 + self.assertEqual(list(reversed(PlanetDistanceInAU)), + [PlanetDistanceInAU.NEPTUNE, + PlanetDistanceInAU.URANUS, + PlanetDistanceInAU.SATURN, + PlanetDistanceInAU.JUPITER, + PlanetDistanceInAU.MARS, + PlanetDistanceInAU.EARTH, + PlanetDistanceInAU.VENUS, + PlanetDistanceInAU.MERCURY]) + def test_init(self): class Planet(Enum): MERCURY = (3.303e+23, 2.4397e6)