FlatBuffers: как создать метод name() в Python
В Java FlatBuffers сгенерирует метод name() для перечислений, что очень полезно.
public static final String[] names = { "SUCCESS", "TIME_OUT", "UNKNOWN_ERROR", };
public static String name(int e) { return names[e]; }
так же и в с ++
inline const char **EnumNamesResultCode() {
static const char *names[] = { "SUCCESS", "TIME_OUT", "UNKNOWN_ERROR", nullptr };
return names;
}
inline const char *EnumNameResultCode(ResultCode e) { return EnumNamesResultCode()[static_cast<int>(e)]; }
но в питоне такого метода нет. он просто генерирует чистый класс с некоторыми константами.
class ResultCode(object):
SUCCESS = 0
TIME_OUT = 1
UNKNOWN_ERROR = 2
Как генерировать метод name() в Python?
Другими словами, как я могу получить имена перечислений в Python?
1 ответ
Если у класса есть группа участников, вы можете dir()
класс и получить членов. Вы, вероятно, хотите отфильтровать вещи, которые начинаются с __
, Затем вы можете создать отображение class[member_name]
где member_name
это то, что вы хотите.