Fonctions du module de messages
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Le package protorpc.messages
propose la fonction d'utilitaire de position suivante :
- find_definition(name, relative_to=None)
-
Recherche une définition par nom dans l'espace module.
L'algorithme recherche des définitions par nom en fonction de la définition d'un message ou par nom complet. S'il ne trouve aucune définition en fonction du paramètre relative_to
, il effectue la recherche par rapport au conteneur de relative_to
. Si relative_to
est un message imbriqué, il recherche message_definition(). En cas d'absence de message_definition(), il recherche son module. Si relative_to
est un module, l'algorithme recherche le module conteneur et effectue la recherche par rapport à lui. Si le module est un module de premier niveau, l'algorithme recherche le message par nom complet. S'il ne trouve toujours aucun message, la recherche échoue, et la méthode génère une erreur DefinitionNotFoundError.
Par exemple, lorsque vous recherchez une définition foo.bar.ADefinition
par rapport à une définition abc.xyz.SomeMessage
de message réelle :
find_definition('foo.bar.ADefinition', SomeMessage)
Les arguments de cette méthode suivent un modèle semblable à celui de la recherche de noms complets :
abc.xyz.SomeMessage. foo.bar.ADefinition
abc.xyz. foo.bar.ADefinition
abc. foo.bar.ADefinition
foo.bar.ADefinition
Lors de la résolution du nom par rapport aux modules et définitions de messages, l'algorithme recherche des messages ou sous-modules trouvés dans ce chemin, en ignorant les valeurs autres que celles liées aux messages.
Un nom commençant par '.'
est considéré comme étant un nom complet. L'algorithme de recherche commence la recherche à partir du package de niveau supérieur. Par exemple, prenons deux types de messages :
abc.xyz.SomeMessage
xyz.SomeMessage
Rechercher .xyz.SomeMessage
par rapport à abc
donne xyz.SomeMessage
et non abc.xyz.SomeMessage
. Pour ce type de nom, le paramètre "relative_to" est effectivement ignoré et toujours défini sur "None".
Pour plus d'informations sur la résolution du nom du package, consultez le spécificateur de package Protocol Buffers.
Arguments
- name
- Nom de la définition à rechercher. Peut être complet ou relatif.
- relative_to
- Recherche une définition par rapport au module ou à la définition de message. Si défini sur "None", lance une recherche de noms complets.
Renvoie une définition de classe Enum ou Message associée au nom.
Génère une erreur DefinitionNotFoundError si aucune définition n'est trouvée dans un chemin de recherche.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/04 (UTC)."],[[["\u003cp\u003eThe \u003ccode\u003efind_definition\u003c/code\u003e function in \u003ccode\u003eprotorpc.messages\u003c/code\u003e locates definitions by name, either relative to a message or module or by a fully qualified name.\u003c/p\u003e\n"],["\u003cp\u003eThe search algorithm for \u003ccode\u003efind_definition\u003c/code\u003e prioritizes searching relative to the \u003ccode\u003erelative_to\u003c/code\u003e parameter, progressing up the module hierarchy if necessary and then falling back to searching by fully qualified name.\u003c/p\u003e\n"],["\u003cp\u003eA name starting with \u003ccode\u003e'.'\u003c/code\u003e in \u003ccode\u003efind_definition\u003c/code\u003e is treated as fully qualified, starting the search from the topmost package and ignoring the \u003ccode\u003erelative_to\u003c/code\u003e parameter.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003efind_definition\u003c/code\u003e method requires two arguments: \u003ccode\u003ename\u003c/code\u003e, which can be fully qualified or relative, and \u003ccode\u003erelative_to\u003c/code\u003e, that specifies a definition to start the search from.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003efind_definition\u003c/code\u003e will return an \u003ccode\u003eEnum\u003c/code\u003e or \u003ccode\u003eMessage\u003c/code\u003e class definition, and in case a definition cannot be found, it will raise a \u003ccode\u003eDefinitionNotFoundError\u003c/code\u003e exception.\u003c/p\u003e\n"]]],[],null,["# Messages Module Functions\n\nThe `protorpc.messages` package provides the following positional utility function:\n\nfind_definition(name, relative_to=None)\n\n: Find definition by name in module-space.\n\n The find algorithm finds definitions by name relative to a message definition or by fully qualified name. If no definition is found relative to the `relative_to` parameter, it searches against the container of `relative_to`. If `relative_to` is a nested Message, it searches its message_definition(). If that message has no message_definition(), it searches its module. If `relative_to` is a module, the find algorithm searches for the containing module and searches relative to it. If the module is a top-level module, the find algorithm searches for the a message using a fully qualified name. If it still finds no message, the search fails and the method raises a [DefinitionNotFoundError](/appengine/docs/legacy/standard/python/tools/protorpc/messages/exceptions#DefinitionNotFoundError).\n\n For example, when looking for any definition `foo.bar.ADefinition` relative to an actual message definition `abc.xyz.SomeMessage`: \n\n ```python\n find_definition('foo.bar.ADefinition', SomeMessage)\n ```\n\n The arguments to this method follow a pattern similar to a search for fully qualified names: \n\n ```python\n abc.xyz.SomeMessage. foo.bar.ADefinition\n abc.xyz. foo.bar.ADefinition\n abc. foo.bar.ADefinition\n foo.bar.ADefinition\n ```\n\n When resolving the name relative to Message definitions and modules, the algorithm searches any Messages or sub-modules found in its path, ignoring non-Message values.\n\n A name that begins with `'.'` is considered to be a fully qualified name. The find algorithm begins searching from the topmost package. For example, assume two message types:\n\n ```python\n abc.xyz.SomeMessage\n xyz.SomeMessage\n ```\n\n Searching for `.xyz.SomeMessage` relative to `abc` resolves to `xyz.SomeMessage` and not `abc.xyz.SomeMessage`. For this kind of name,\n the relative_to parameter is effectively ignored and always set to None.\n\n For more information about package name resolution, please see the [Protocol Buffers Package specifier](https://developers.google.com/protocol-buffers/docs/proto#packages).\n **Arguments**\n\n name\n : Name of a definition to find. May be fully qualified or relative.\n\n relative_to\n : Searches for a definition relative to the message definition or module. If None, causes a fully qualified name search.\n\n Returns an [Enum](/appengine/docs/legacy/standard/python/tools/protorpc/messages/enumclass) or [Message](/appengine/docs/legacy/standard/python/tools/protorpc/messages/messageclass) class definition associated with the name.\n\n raises a [DefinitionNotFoundError](/appengine/docs/legacy/standard/python/tools/protorpc/messages/exceptions#DefinitionNotFoundError) if no definition is found in any search path."]]