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 类型,则将针对该类型验证默认值。