Rob Williscroft:
> This is nice, but you can cut down on some of the cruft:
>
> class Constants( object ):
>   pass
>
> Constants.RIGHT = 0
> Constants.LEFT = 1
>
> ## client code ...
> print Constants.LEFT

Another possibility is to define such constants as strings instead of
integers:

_allflags = ("left",
             "right",
             # other constants...
             # other constants...
            )

class Flags(): pass

for _flag in _allflags:
    setattr(Flags, _flag, _flag)

#print Flags.__dict__

Then the user can use Flags.left+" "+Flags.... , or just the "left"
string.
Then maybe for each attribute like the "left" constant, a "left_doc"
attribute can be added to Flags with a textual explanation of the
meaning of the "left" constant.

If your module has a short name, then maybe it's better to just use
such string constants as modulename.constant instead of Flags.constant,
 using globals()[_flag] = _flag

Bye,
bearophile

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to