EnumField 类给出了枚举值的定义。Enum 字段可能包含在相关枚举类型完成解析前处于延迟状态的默认值。这是支持某些循环引用的必要条件。例如:
from protorpc import messages class Message1(messages.Message): class Color(messages.Enum): RED = 1 GREEN = 2 BLUE = 3 # Validate this field's default value when default is accessed. animal = messages.EnumField('Message2.Animal', 1, default='HORSE') class Message2(messages.Message): class Animal(messages.Enum): DOG = 1 CAT = 2 HORSE = 3 # This fields default value will be validated right away since Color is # already fully resolved. color = messages.EnumField(Message1.Color, 1, default='RED')
EnumField 由 protorpc.messages 模块提供。
构造函数
EnumField 类的构造函数定义如下:
- class EnumField(enum_type, number, required, repeated, variant, default)
 -  
    
为 Enum 值提供字段定义。
参数- enum_type
 - 字段的 Enum 类型。必须是 Enum 的子类。
 - number
 - 字段的编号。每个消息类的编号必须是唯一的。
 - required
 - 此字段是否为必需项。与 
repeated参数相互排斥;如果使用required,请勿指定repeated。 - repeated
 - 此字段是否重复。与 
required参数相互排斥;如果使用repeated,请勿指定required。 - variant
 - 进一步指定字段的类型。有些字段类型要基于底层传输格式进行进一步限定。最佳做法是使用默认值,但开发者可以使用该字段将某个整数字段声明为与默认 64 位整数相对的 32 位整数。
 - default
 - 在流中找不到字段值时字段需采用的默认值。
 
当
enum_type无效时抛出 FieldDefinitionError。 
类属性
EnumField 类提供以下类属性:
- type()
 - 用于字段的 Enum 类型。
 - default()
 - 枚举字段的默认值。如果未解析默认值,则使用 Enum 类型作为默认值。
 
实例方法
EnumField 实例提供以下方法:
- validate_default_element(value)
 - 验证 Enum 字段的默认元素。在字段类型尚未解析时,Enum 字段允许延迟解析默认值。字段的默认值可以是一个字符串或一个整数。如果已解析字段的 Enum 类型,则将针对该类型验证默认值。