на самом деле это было намного проще, чем использование метакласса, и никакой "метод класса" не нужен:
class MySQLConstants():
DECIMAL = 0
TINY = 1
SHORT = 2
LONG = 3
FLOAT = 4
DOUBLE = 5
def create_dict( dicForReversing ):
fieldTypeDic = {}
for key, value in dicForReversing.items():
if isinstance(value, int):
fieldTypeDic[ value ] = key
return fieldTypeDic
fieldTypeDic = create_dict( vars() )
, но, в частности, спасибо Этану Фурману за то, что он показал, что можно сделатьпроизойдет во время создания класса
NB, если вы предполагаете иметь несколько значений для ваших ключей (это имеет место с константами MySQLdb), лучший способ справиться с этим может быть следующим
ENUM = 247
CHAR = TINY
INTERVAL = ENUM
def create_dict( dicForReversing ):
fieldTypeDic = {}
for key, value in dicForReversing.items():
if isinstance(value, int):
if not value in fieldTypeDic:
fieldTypeDic[ value ] = set()
fieldTypeDic[ value ].add( key )
return fieldTypeDic
fieldTypeDic = create_dict( vars() )