Close #18545: now only executes member_type if no _value_ is assigned in __new__.

This commit is contained in:
Ethan Furman 2013-07-25 13:50:45 -07:00
parent 4d35e75ca0
commit b41803e3ef
2 changed files with 20 additions and 4 deletions

View file

@ -152,12 +152,12 @@ class EnumMeta(type):
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