[Python-ideas] constant/enum type in stdlib (original) (raw)
Antoine Pitrou solipsis at pitrou.net
Wed Jan 30 17:23:10 CET 2013
- Previous message: [Python-ideas] constant/enum type in stdlib
- Next message: [Python-ideas] constant/enum type in stdlib
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Le Wed, 30 Jan 2013 15:16:49 +0000, Michael Foord <fuzzyman at gmail.com> a écrit :
Being an int subclass (and possibly optionally a strs subclass) is a requirement if any adopted Enum is to be used within the standard library in places where integers are currently used as "poor man's enums". I also don't think flufl.enum supports flag enums (ones that can be OR'd together), right?
If a flexible solution is desired (with either int or str subclassing, various numbering schemes), may I suggest another kind of syntax:
class ErrorFlag(Enum): type = 'symbolic' names = ('strict', 'ignore', 'replace')
class SeekFlag(Enum): type = 'sequential' names = ('SET', 'CUR', 'END')
class TypeFlag(Enum): type = 'bitmask' names = ('HEAPTYPE', 'HAS_GC', 'INT_SUBCLASS')
ErrorFlag.ignore ErrorFlag.ignore ErrorFlag.ignore == 'ignore' True ErrorFlag('ignore') ErrorFlag.ignore isinstance(ErrorFlag.ignore, str) True isinstance(ErrorFlag.ignore, int) False ErrorFlag(0) [...] ValueError: invalid value for <class 'enum.ErrorFlag'>: 0
SeekFlag('SET') SeekFlag.SET SeekFlag('SET') + 0 0 SeekFlag(0) SeekFlag.SET isinstance(SeekFlag.CUR, int) True isinstance(SeekFlag.CUR, str) False
TypeFlag(1) TypeFlag.HEAPTYPE TypeFlag(2) TypeFlag.HAS_GC TypeFlag.HASGC | TypeFlag.INTSUBCLASS 6
Regards
Antoine.
- Previous message: [Python-ideas] constant/enum type in stdlib
- Next message: [Python-ideas] constant/enum type in stdlib
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]