Funktionen des Moduls "Messages"

Das Paket protorpc.messages bietet die folgende Funktion für Positionsdienste:

find_definition(name, relative_to=None)

Finden von Definitionen nach Name im Modulbereich

Mit dem Find-Algorithmus kann eine Definitionssuche nach relativen Namen zu einer Nachrichtendefinition oder nach voll qualifizierten Namen durchgeführt werden. Wird relativ zum Parameter relative_to keine Definition gefunden, wird nach dem Container von relative_to gesucht. Wenn relative_to eine verschachtelte Nachricht ist, wird nach "message_definition()" gesucht. Falls die Nachricht keine "message_definition()" enthält, wird das zugehörige Modul durchsucht. Wenn relative_to ein Modul ist, sucht der Suchalgorithmus nach dem enthaltenden Modul und darauf bezogene Suchanfragen. Wenn es sich bei dem Modul um ein Modul auf oberster Ebene handelt, sucht der Find-Algorithmus nach einer Nachricht mit einem voll qualifizierten Namen. Wird dann noch immer keine Nachricht gefunden, schlägt die Suche fehl und die Methode löst einen DefinitionNotFoundError aus.

Beispiel: Die Suche nach einer beliebigen Definition foo.bar.ADefinition in Bezug auf eine tatsächliche Nachrichtendefinition abc.xyz..SomeMessage:

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

Die Argumente dieser Methode folgen einem Muster, das einer Suche nach voll qualifizierten Namen ähnelt:

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

Beim Auflösen des Namens relativ zu den Nachrichtendefinitionen und Modulen durchsucht der Algorithmus alle Nachrichten bzw. Untermodule in diesem Pfad und ignoriert dabei Werte, die keinen Nachrichten zugeordnet sind.

Namen, die mit '.' beginnen, werden als voll qualifizierte Namen angesehen. Der Find-Algorithmus beginnt mit der Suche im obersten Paket. Gehen wir beispielsweise von zwei Nachrichtentypen aus:

abc.xyz.SomeMessage
xyz.SomeMessage

Die Suche nach .xyz.SomeMessage in Bezug auf abc ergibt xyz..SomeMessage und nicht abc.xyz.SomeMessage. Für diese Art von Namen wird der Parameter "relative_to" ignoriert und immer auf "None" gesetzt.

Weitere Informationen zur Auflösung von Paketnamen finden Sie unter Paketbezeichner "protocol buffers".

Argumente
name
Name der zu suchenden Definition. Kann voll qualifiziert oder relativ sein.
relative_to
Sucht nach einer Definition relativ zur Nachrichtendefinition oder dem Modul. Bei "None" wird eine Suche nach einem voll qualifizierten Namen ausgeführt.

Gibt eine Enum- oder Message-Klassendefinition zurück, die dem Namen zugeordnet ist.

Löst einen DefinitionNotFoundError aus, wenn in keinem Suchpfad eine Definition gefunden wird.

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

App Engine-Standardumgebung für Python 2