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
中的 Type 值。最佳做法是使用預設值,但您可以將值指定為 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()
-
取得包含這個 Field 定義的訊息定義。傳回含有 Field 的 Message 物件定義。如果 Field 是定義在訊息類別以外,則傳回 None。
若值並非預期的類型,就會引發 ValidationError。