k is an enum-like for Python.
[sudo] pip install k
The library works with both Python 2.x and 3.x.
Create an enum named name, with a given list of names for each member, e.g.:
import k
Foo = k.make("Foo", ["A", "B", "C"])You can then use each value:
>>> Foo.A
0
>>> Foo.B
1
>>> Foo.C
2Types are matched, too. An enum member is of its enum type:
>>> isinstance(Foo.A, Foo)
True
>>> A1 = k.make("A1", "X")
>>> A2 = k.make("A2", "X")
>>> A1.X
0
>>> A2.X
0
>>> A1.X == A2.X
True
>>> isinstance(A1.X, A2)
False
>>> isinstance(A2.X, A1)
FalseAn enum name is useful for debugging purposes, but you can use the same name for different enums if you like:
>>> A = k.make("A", "X")
>>> B = k.make("A", "X")
>>> A == B
False
>>> isinstance(A.X, B)
False
>>> type(A.X)
<class 'k.A'>
>>> type(B.X)
<class 'k.A'>
>>> type(A.X) == type(B.X)
FalseBut enum members are ints too:
>>> A = k.make("A", "abcd")
>>> isinstance(A.a, int)
>>> A.b + 41
42
