EnumField 类

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')

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