Greetings! I'm currently using Python to implement a set of tests for code that is otherwise written in C. This code was wrapped using Boost.Python and is then loaded into Python as module.
What I often have in C is this: // bitfield (several flags combined) #define STATUS_OVERTEMP 1u #define STATUS_ON_FIRE 2u #define STATUS_BORED 4u unsigned get_status(void); // enumeration (distinct values from a set) enum color { color_red=1, color_green=13, color_mauve=42 }; enum color get_color(void); What I'm looking for is a suggestion how to handle this in Python. Note that technically, this works without problem, I'm rather looking for stylistic advise. What I currently have is these (note: I'm retyping this, so ignore any syntax errors, please): STATUS_OVERTEMP = 1 STATUS_ON_FIRE = 2 STATUS_BORED = 4 def status_as_string(st): tmp = [] if st&STATUS_OVERTEMP: tmp.append("OVERTEMP") if st&STATUS_ON_FIRE: tmp.append("ON_FIRE") if st&STATUS_BORED: tmp.append("BORED") return "|".join(tmp) COLOR_RED = 1 COLOR_GREEN = 13 COLOR_MAUVE = 42 def color_as_string(c): names = { COLOR_RED:"RED", COLOR_GREEN:"GREEN", COLOR_MAUVE:"MAUVE"} return names[c]; Further, I also tried defining a separate class: class Color(int): RED = 1 GREEN = 13 MAUVE = 42 names = { RED:"RED", GREEN:"GREEN", MAUVE:"MAUVE"} def __str__(self): return names[c]; ... To be a bit more explicit about what I would like, here is an example how I would like to use it: c = Color.RED type(c) # should yield class Color str(c) # should yield "RED" Color(999) # should signal the invalid color value Any other suggestions how to structure this or rewrite this? thanks! Uli -- Sator Laser GmbH Geschäftsführer: Thorsten Föcking, Amtsgericht Hamburg HR B62 932 -- http://mail.python.org/mailman/listinfo/python-list