[Python-ideas] constant/enum type in stdlib (original) (raw)
drekin at gmail.com drekin at gmail.com
Thu Jan 31 11:38:29 CET 2013
- Previous message: [Python-ideas] constant/enum type in stdlib
- Next message: [Python-ideas] Extend module objects to support properties
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hello. It should be also possible to specify the values of enum constants explicitly. For 'bitmask' type only powers of 2 should be allowed or maybe the values could be the exponents (as your TypeFlag example indicates).
The same way 'symbolic' type acts as str and 'sequential' type acts as int, 'bitmask' type could act both as int and set (or frozenset) since its semantics is like of set. The enum value object could represent both the int value and corresponding singleton set. OR-ing would produce corresponding multivalue set.
isinstance(TypeFlag.HEAPTYPE, int) True isinstance(TypeFlag.HEAPTYTE, set) True
TypeFlag.HASGC | TypeFlag.INTSUBCLASS TypeFlag.HEAPTYPE|HAS_GS # or maybe <TypeFlag {HEAPTYPE, HAS_GS}> TypeFlag.HEAPTYPE in (TypeFlag.HEAPTYPE | TypeFlag.HASGC) True TypeFlag.HEAPTYPE in TypeFlag.HEAPTYPE True
TypeFlag(1) TypeFlag.HEAPTYPE TypeFlag(2) TypeFlag.HAS_GC set(TypeFlag.HEAPTYPE) {1} set(TypeFlag.HEAPTYPE | TypeFlag.HASGC) {1, 2} int(TypeFlag.HEAPTYPE) 2 int(TypeFlag.HEAPTYPE | TypeFlag.HASGC) 6
Note the difference between n and 2 ** n semantics. So there slould be something like
TypeFlag.decompose(2) TypeFlag.HEAPTYPE TypeFlag.decompose(6) TypeFlag.HEAPTYPE|HAS_GS
Regards, Drekin
- Previous message: [Python-ideas] constant/enum type in stdlib
- Next message: [Python-ideas] Extend module objects to support properties
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]