Field 类是为消息定义的所有字段的基类。开发者无法扩展此类。
Field
由 protorpc.messages
模块提供。
构造函数
Field 类的构造函数定义如下:
- class Field (message_type, number, [required=False | repeated=False], variant=None, default=None)
-
初始化一个 Field 实例。Field 的每个子类都必须定义以下内容:
VARIANTS
- 该字段接收的变体类型集。
DEFAULT_VARIANT
- 构造函数中未指定变体类型时使用的默认变体类型。
- number
- 字段的编号。每个消息类的编号必须是唯一的。
- required=False
- 此字段是否为必需项。与
repeated
参数相互排斥;如果使用required
,请勿指定repeated
。 - repeated=False
- 此字段是否重复。与
required
参数相互排斥;如果使用了repeated=True
,请勿指定required=True
。 - variant=None
- 提供主要供协议缓冲区使用的其他编码信息。这些变体将映射到
descriptor.proto
中的类型值。最佳做法是使用默认值,但您可以将值指定为 32 位值、64 位值、无符号值等等。 - default=None
- 如果在基本请求中未发现用于字段的值,则使用此默认值。
注意:重复字段或消息字段不允许使用默认值。
可能引发的异常如下:
- 如果为字段提供了无效变体,则引发 InvalidVariantError。
- 如果为字段提供了无效默认值,则引发 InvalidDefaultError。
- 如果提供了无效编号或者使用了互斥字段,则引发 FieldDefinitionError。
- 如果字段编号超出范围或属于预留编号,则引发 InvalidNumberError。
类属性
FieldList 类具有一个属性:
- default()
- 字段的默认值。
实例方法
FieldList 实例具有以下方法:
- validate(value)
- 验证分配给字段的值。
参数
- value
- 要评估的值。
如果值并非预期类型,则抛出 ValidationError。
- validate_default_element(value)
-
验证分配给默认字段的值。特定于单个元素。
在必须使用循环定义引用时,有些字段可能允许延迟解析默认类型。在这种情况下,默认值可能是在定义了所有消息类之后,必要时予以解析的占位符。
参数- value
- 要验证的默认值。
如果值并非预期类型,则抛出 ValidationError。
- validate_default(value)
-
验证某个字段的默认值。
参数- value
- 要验证的默认值。
如果值并非预期类型,则抛出 ValidationError。
- message_definition()
-
获取包含该字段定义的消息定义。返回包含该字段的 Message 对象的定义。如果字段是在消息类以外的位置定义的,则返回 None。
如果值并非预期类型,则抛出 ValidationError。