2016-09-10 3:49 GMT-04:00 Ethan Furman <et...@stoneleaf.us>: > With __definition_order__ Enum can display the actual creation order of enum > members and methods, while relying on Enum.__dict__.keys() presents a > jumbled mess with many attributes the user never wrote, the enum members > either > appearing /after/ all the methods (even if actually written before), or > entirely absent.
Python 3.5 also returns methods in Enum.__dict__(). So it would be a new feature, right? The use case seems to be specific to Enum. Can't you add a new method which only returns members (ordered by insertion order)? list(myenum._member_maps.keys()) returns members, sorted by insertion order. Is it what you want? Code: --- import enum class Color(enum.Enum): red = 1 blue = red green = 2 print(Color.__dict__.keys()) print(list(Color._member_map_.keys())) --- Python 3.5: --- dict_keys(['__module__', '_member_names_', 'green', '_member_type_', 'blue', '_value2member_map_', '_member_map_', '__new__', 'red', '__doc__']) ['red', 'blue', 'green'] --- Python 3.6: --- dict_keys(['_generate_next_value_', '__module__', '__doc__', '_member_names_', '_member_map_', '_member_type_', '_value2member_map_', 'red', 'blue', 'green', '__new__']) ['red', 'blue', 'green'] --- Note: It seems like dir(myenum) ignores "aliases" like blue=red in my example. Victor _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com