protobuf, python Enum

继承enum.Enum的python class,其实是一个, name-value的关系,可以直接className(value)得到一个类。比如

import enum


class xx(enum.Enum):
    NAME = 'value'

print(xx('value'))
print(xx.NAME.name)
print(xx.NAME.value)

如果只知道属性名字,可以用print(getattr(xx, arg))

proto定义的是一个key-value

从python来说,一个enum的话,他可以:

xxx.items()    xxx.values()    xxx.keys()

奇葩的是,如果你得到了value的话,想要知道它名字,那么就是xxx.Name(value),有点反过来的意思。就是getNameByValue

from build.gen.py.enum_pb2 import stupidone_test


print(stupidone_test.Type.items())
print(stupidone_test.Type.keys())
print(stupidone_test.Type.values())


print(stupidone_test.Type.Name(-1))
print(stupidone_test.Type.Value('ONE'))
原文地址:https://www.cnblogs.com/liuweimingcprogram/p/10997909.html