2017-08-13 3 views
0

J'ai un module importé dans mon code. Le module contient une fonction définie dedans. La fonction ne renvoie aucune valeur. Dans mon code, je veux accéder à une variable déclarée dans cette fonction. Y a-t-il un moyen de le faire? Donc, il y a un module à l'intérieur d'un OSS qui génère une séquence de parole. Mais la variable de séquence de parole n'est pas globale, ni la fonction renvoie la séquence de parole. Je veux accéder à la séquence de discours dans mon addon.Variables d'accès dans les fonctions des classes importées

+0

qui ressemble à un [problème XY] (https://meta.stackexchange.com/a/66378). qu'essayez-vous d'accomplir? Veuillez fournir un [exemple minimal, complet et vérifiable] (https://stackoverflow.com/help/mcve) qui reproduit votre problème. –

+0

Une variable dans la portée de cette fonction? Sans aucune référence au module ou à votre code, c'est difficile à dire, mais vous ne devriez pas pouvoir accéder aux variables définies dans la portée d'une fonction à partir de l'endroit où vous l'appelez. – cole

+0

Modifié, avec le problème. –

Répondre

0

Si votre fonction ressemble à ceci:

def function(): 
    ... 
    my_variable = "foo" 

Ensuite, vous pouvez ajouter un paramètre qui forcerait cette variable à retourner en même temps que tout ce qui est retourné. Donc, la fonction ressemblerait à ceci.

def function(get_variable=False): 
    ... 
    return_variable = "bar" 
    my_variable = "foo" 
    if get_variable: 
     return (my_variable, return_variable) 
    else: 
     return return_variable 

Et puis accéder comme ceci:

import module 


my_variable, return_variable = module.function(get_variable=True) 

Vous n'avez pas besoin de ce genre de bidouille si votre fonction ne retourne rien du tout. Faites-le simplement retourner la variable que vous voulez et attribuez-la à quelque chose dans la portée de votre code principal.

+0

Je le sais déjà. Mais la chose, comme je l'ai mentionné, c'est que c'est un logiciel open source et que je construis un addon pour ça ne peux pas apporter de changements pour le moment. Par conséquent, ce hack ne fonctionnera peut-être pas? –

+0

Je ne pense pas qu'il existe un autre moyen d'y parvenir .. Vous pouvez toujours modifier la source pour répondre à vos besoins si .. –

+0

Je pourrais vous aider si vous le souhaitez, dites-moi quel module, fonction et variable tu veux :) –