Par exemple, dans Lua, vous pouvez placer la ligne suivante à la fin d'un script:Est-il possible de renvoyer un objet ou une valeur d'un script Python à l'application d'hébergement?
return <some-value/object>
La valeur/objet qui est retourné peut alors être récupéré par l'application d'hébergement.
J'utilise ce modèle pour que les scripts puissent représenter des usines pour les gestionnaires d'événements. Les gestionnaires d'événements basés sur un script sont ensuite utilisés pour étendre l'application. Par exemple, l'application d'hébergement exécute un script appelé 'SomeEventHandler.lua' qui définit et retourne un objet qui est un gestionnaire d'événement pour 'SomeEvent' dans votre application.
Est-ce que cela peut être fait en Python? Ou y a-t-il un meilleur moyen d'y parvenir? Plus précisément, j'intègre IronPython dans mon application C# et je cherche un moyen d'utiliser ces gestionnaires d'événements basés sur des scripts, ce qui permettra à l'application d'être étendue en utilisant Python.
Comment référence ne vous la fonction? La chose que j'aime vraiment dans Lua à propos du retour d'un objet du script est que l'objet est complètement anonyme. Vous n'avez pas besoin d'avoir un nom de classe ou un nom de variable globale sur lequel le script et l'application d'hébergement doivent s'entendre. –
Un script python (c'est-à-dire un module) ne peut pas renvoyer un objet. Donc, vous devez vous mettre d'accord sur une convention d'interface, que ce soit "le script du plugin doit laisser exactement un objet dans l'espace de noms, et ceci doit être une instance de MyApplicationPlugin" ou fournir une fonction d'un nom particulier. – balpha