Need an enum type extension
Remco Gerlich
scarblac-spamtrap at pino.selwerd.nl
Fri Apr 14 05:30:04 EDT 2000
sue wrote in comp.lang.python:
> In Ada, I can do things like:
>
> type MyEnum is ( A, B, C );
> for MyEnum use ( A : 3; B : 7; C : 13 );
>
> Ada uses "'string" to refer to attributes.
>
> MyEnum'len == 3. (number of items in list)
> A'next == B (next item in list)
> A'value == 3 (its low-level representation)
> B'index = 1 (its position in the list)
>
> But A == 3 fails. only A == A passes. A'value == 3 is
> true.
This simple try seems to do that, at least. It needs some work (EnumVar
needs to be immutable, I suppose), but maybe you can base it on this?
class EnumVar:
def __init__(self, value, index, enumlist):
self.value = value
self.index = index
self.__enumlist = enumlist
def next(self):
return self.__enumlist.get_enum(self.index+1)
class EnumList:
def __init__(self, values):
self.__list = []
self.len = len(values)
for i in range(self.len):
self.__list.append(EnumVar(values[i], i, self)
def get_enum(self, i):
return self.__list[i]
def get_list(self):
return self.__list
Now use this like:
>>> MyEnum = EnumList([3, 7, 13])
>>> A, B, C = MyEnum.get_list()
>>> MyEnum.len
3
>>> A.next() is B
1
>>> A.value
3
>>> B.index
1
>>> A == 3
0
>>> A == A
1
--
Remco Gerlich, scarblac at pino.selwerd.nl
12:26pm up 38 days, 23:46, 8 users, load average: 1.49, 1.23, 1.18
More information about the Python-list
mailing list