訊息模組函式

protorpc.messages 套件提供下列位置公用程式函式:

find_definition(name, relative_to=None)

在模組空間中依名稱尋找定義。

尋找演算法會依相對於訊息定義的名稱或依完整名稱來尋找定義。如果找不到相對於 relative_to 參數的定義,則會搜尋 relative_to 的容器。如果 relative_to 是巢狀結構的訊息,則會搜尋其 message_definition()。如果該訊息沒有 message_definition(),則會搜尋其模組。如果 relative_to 為模組,尋找演算法會搜尋內含模組以及相對的搜尋。如果該模組為頂層模組,尋找演算法會搜尋使用完整名稱的訊息。如果仍找不到訊息,搜尋會失敗且該方法會發出 DefinitionNotFoundError

舉例來說,在搜尋任何 foo.bar.ADefinition 定義 (相對於實際訊息定義 abc.xyz.SomeMessage) 時,請使用:

find_definition('foo.bar.ADefinition', SomeMessage)

這個方法的引數所遵循的格式,與針對完整名稱進行的搜尋相似:

abc.xyz.SomeMessage. foo.bar.ADefinition
abc.xyz. foo.bar.ADefinition
abc. foo.bar.ADefinition
foo.bar.ADefinition

解析相對於 Message 定義和模組的名稱時,演算法會搜尋其路徑中找到的任何 Message 或子模組,並忽略非 Message 的值。

開頭為 '.' 的名稱會視為完整名稱。尋找演算法會從最頂層的套件開始搜尋。舉例來說,假設有兩種訊息類型:

abc.xyz.SomeMessage
xyz.SomeMessage

搜尋 .xyz.SomeMessage (相對於 abc) 會解析為 xyz.SomeMessage,而非 abc.xyz.SomeMessage。對於這類名稱,實際上會將 relative_to 參數忽略,且 relative_to 參數會一律設為 None。

如要進一步瞭解套件名稱解析,請參閱通訊協定緩衝區套件指定碼

引數
name
要尋找的定義名稱。可以是完整名稱或相對名稱。
relative_to
搜尋相對於訊息定義或模組的定義。如果為 None,則會觸發完整名稱的搜尋。

傳回與該名稱相關聯的 EnumMessage 類別定義。

如果在所有搜尋路徑中都找不到任何定義,則會發出 DefinitionNotFoundError 錯誤。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Python 2 適用的 App Engine 標準環境