EnumField 類別

EnumField 類別為列舉值提供定義。列舉欄位的預設值可能會延遲到關聯的列舉類型完成解析後才會解析,這對某些特定的循環參照而言是必須的。例如:

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 的子類別。
number
欄位編號。每種訊息類別的欄位號碼皆必須與其他類別不同。
必填
這個欄位是否為必填欄位。與 repeated 引數互斥;若使用 required,請勿指定 repeated
重複
這個欄位是否為重複欄位。與 required 引數互斥;若使用 repeated,請勿指定 required
variant
進一步指定欄位類型。有些欄位類型由於基本傳輸格式而無法進一步指定。最佳做法是使用預設值,但開發人員可以使用這個欄位,將整數欄位宣告為 32 位元整數,而非預設的 64 位元。
預設
如果在串流中找不到該欄位,則使用的預設值。

如果 enum_type 無效,則會引發 FieldDefinitionError

類別屬性

EnumField 類別提供下列類別屬性:

type()
用於欄位的列舉型別。
default()
列舉欄位的預設值。如果系統無法解析預設值,會使用 Enum 類型做為預設值。

例項方法

EnumField 例項有下列方法:

validate_default_element(value)
驗證整數欄位的預設元素。當系統尚未解析某個欄位類型時,列舉欄位允許延後解析預設值的時間。欄位的預設值可能是字串或整數。如果系統已解析欄位的 Enum 類型,就會依據該類型驗證預設值。