David Wurmfeld wrote:
I am new to python; any insight on the following would be appreciated, even if it is the admonition to RTFM (as long as you can direct me to a relevant FM)

Is there a standard approach to enumerated types? I could create a dictionary with a linear set of keys, but isn't this overkill? There is afterall a "True" and "False" enumeration for Boolean.

Not a standard one, but here's what I use:

class Enum(int):
        __slots__ = ("_name")
        def __new__(cls, val, name):
                v = int.__new__(cls, val)
                v._name = str(name)
                return v
        def __str__(self):
                return self._name
        def __repr__(self):
                return "%s(%d, %r)" % (self.__class__.__name__, self, 
self._name)
        def __cmp__(self, other):
                if isinstance(other, int):
                        return int.__cmp__(self, other)
                if type(other) is str:
                        return cmp(self._name, other)
                raise ValueError, "Enum comparison with bad type"

class Enums(list):
        def __init__(self, *init):
                for i, val in enumerate(init):
                        if issubclass(type(val), list):
                                for j, subval in enumerate(val):
                                        self.append(Enum(i+j, str(subval)))
                        elif isinstance(val, Enum):
                                self.append(val)
                        else:
                                self.append(Enum(i, str(val)))
        def __repr__(self):
                return "%s(%s)" % (self.__class__.__name__, list.__repr__(self))



-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Keith Dart <[EMAIL PROTECTED]>
   public key: ID: F3D288E4
   =====================================================================
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to