Close #18545: now only executes member_type if no _value_ is assigned in __new__.
diff --git a/Lib/enum.py b/Lib/enum.py
index 0def138..33af042 100644
--- a/Lib/enum.py
+++ b/Lib/enum.py
@@ -152,12 +152,12 @@
                 args = (args, )     # wrap it one more time
             if not use_args:
                 enum_member = __new__(enum_class)
-                original_value = value
+                if not hasattr(enum_member, '_value_'):
+                    enum_member._value_ = value
             else:
                 enum_member = __new__(enum_class, *args)
-                original_value = member_type(*args)
-            if not hasattr(enum_member, '_value_'):
-                enum_member._value_ = original_value
+                if not hasattr(enum_member, '_value_'):
+                    enum_member._value_ = member_type(*args)
             value = enum_member._value_
             enum_member._member_type_ = member_type
             enum_member._name_ = member_name