ялабуми™

Разработчик. Всесторонний.

Enumerator в Python

leave a comment »

Недавно возникла необходимость сделать подобие енумератора в Питоне. Решение было придумано достаточно быстро, а реализован енумератор был за пару минут.

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

Написано Alexander Shvetsov

Июль 30, 2009 в 04:44

Опубликовано в Programming, Python

Ответить