Note that there are some explanatory texts on larger screens.

plurals
  1. POOrdering enum value in python
    primarykey
    data
    text
    <p>I would like to be able to arrange the ordering of Enum. Has somebody suggestions how this can be solved? </p> <p>The following Enum meta class is using: </p> <pre><code>class EnumMeta(type): def __new__(typ, name, bases, attrs): cls_attrs = {} cls_choices = [] for attr_name, value in attrs.items(): cls_attrs[attr_name] = attr_name.lower() if not attr_name.startswith("__"): cls_choices.append((attr_name.lower(), value)) def choices(cls): return cls_choices def values(cls, value=None): if value is None: return {choice[0]: unicode(choice[1]) for choice in cls.choices()} elif isinstance(value, list): return {choice[0]: unicode(choice[1]) for choice in cls.choices() if choice[0] in value} else: return unicode(dict(cls.choices()).get(value)) def keys(cls, nil=False): items = [item[0] for item in cls.choices()] if nil: items.append('') return items def combined_length(cls): return len(",".join(cls.values().keys())) def max_length(cls): return max(map(len, cls.values().keys())) cls_attrs['choices'] = classmethod(choices) cls_attrs['values'] = classmethod(values) cls_attrs['keys'] = classmethod(keys) cls_attrs['combined_length'] = classmethod(combined_length) cls_attrs['max_length'] = classmethod(max_length) return type(name, bases, cls_attrs) </code></pre> <p>An example of an Enum is as follow: </p> <pre><code>class SideHemType: __ordering__ = ['double', 'single'] __metaclass__ = EnumMeta Single = "Single side hem for opaque fabrics" Double = "Double side hem for transparent fabrics" class TestEnumOrdering: print SideHemType.keys() print SideHemType.values() </code></pre> <p>By printing the Enum SideHemType first Double is printed and then Single. But I would like first Single and then Double. </p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload