Enumerator в Python
Недавно возникла необходимость сделать подобие енумератора в Питоне. Решение было придумано достаточно быстро, а реализован енумератор был за пару минут.
class enum():
'''
Represents structure for enumeration.
'''
def __init__( self, *args, **kwargs ):
for key, value in kwargs.items():
setattr( self, key, value )
Использовать его так же просто:
Numbers = enum(
One = 1,
Two = 2,
Three = 3
)
Numbers.One # 1
Кстати, в него можно добавить пару удобных методов – ToString(), FromString() и iteritems():
class enum():
'''
Represents structure for enumeration.
'''
def __init__( self, *args, **kwargs ):
self.dict = {}
for key, value in kwargs.items():
setattr( self, key, value )
self.dict[ key ] = value
def ToString( self, value ):
for k, v in self.dict.iteritems():
if v == value: return k
return None
def FromString( self, key ):
if key in self.dict:
return self.dict[ key ]
return None
def iteritems( self ):
return self.dict