Close #18924:  Block naive attempts to change an Enum member.
diff --git a/Lib/enum.py b/Lib/enum.py
index 8219005..82058ae 100644
--- a/Lib/enum.py
+++ b/Lib/enum.py
@@ -263,6 +263,19 @@
     def __repr__(cls):
         return "<enum %r>" % cls.__name__
 
+    def __setattr__(cls, name, value):
+        """Block attempts to reassign Enum members.
+
+        A simple assignment to the class namespace only changes one of the
+        several possible ways to get an Enum member from the Enum class,
+        resulting in an inconsistent Enumeration.
+
+        """
+        member_map = cls.__dict__.get('_member_map_', {})
+        if name in member_map:
+            raise AttributeError('Cannot reassign members.')
+        super().__setattr__(name, value)
+
     def _create_(cls, class_name, names=None, *, module=None, type=None):
         """Convenience method to create a new Enum class.
 
diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py
index 2a589f5..018e3fd 100644
--- a/Lib/test/test_enum.py
+++ b/Lib/test/test_enum.py
@@ -152,6 +152,11 @@
         with self.assertRaises(AttributeError):
             Season.SPRING.value = 2
 
+    def test_changing_member(self):
+        Season = self.Season
+        with self.assertRaises(AttributeError):
+            Season.WINTER = 'really cold'
+
     def test_invalid_names(self):
         with self.assertRaises(ValueError):
             class Wrong(Enum):