@@ -155,9 +155,11 @@ def __new__(metacls, cls, bases, classdict):
155155 enum_class ._member_map_ = OrderedDict () # name->value map
156156 enum_class ._member_type_ = member_type
157157
158- # save attributes from super classes so we know if we can take
159- # the shortcut of storing members in the class dict
160- base_attributes = {a for b in enum_class .mro () for a in b .__dict__ }
158+ # save DynamicClassAttribute attributes from super classes so we know
159+ # if we can take the shortcut of storing members in the class dict
160+ dynamic_attributes = {k for c in enum_class .mro ()
161+ for k , v in c .__dict__ .items ()
162+ if isinstance (v , DynamicClassAttribute )}
161163
162164 # Reverse value->name map for hashable values.
163165 enum_class ._value2member_map_ = {}
@@ -217,7 +219,7 @@ def __new__(metacls, cls, bases, classdict):
217219 enum_class ._member_names_ .append (member_name )
218220 # performance boost for any member that would not shadow
219221 # a DynamicClassAttribute
220- if member_name not in base_attributes :
222+ if member_name not in dynamic_attributes :
221223 setattr (enum_class , member_name , enum_member )
222224 # now add to _member_map_
223225 enum_class ._member_map_ [member_name ] = enum_member
0 commit comments