2009-04-23 7 views
5

Je me demandais, comment cacher spécialeComment cacher __methods__ en python?

__.*__ 

méthodes en python *? En particulier, je suis en utilisant un interpréteur python avec tabulations fin, et je voudrais afficher uniquement les méthodes mes modules ...

exposent

grâce,

/myyn/

* (au moins l'utilisateur, qui utilise un shell python)


il ressemble maintenant:

h[2] >>> Q. 
Q.ALL(      Q.__delattr__(    Q.__getattribute__(    
Q.__package__    Q.__sizeof__(    Q.find_values(       
Q.json 
Q.DEFAULT_CONDITION(  Q.__dict__     Q.__hash__(     
Q.__reduce__(    Q.__str__(     Q.get_loops_total_platform( 
Q.jsonlib 
Q.SUCCESSFUL(    Q.__doc__     Q.__init__(     
Q.__reduce_ex__(   Q.__subclasshook__(   Q.get_platforms(    
Q.memoize(
Q.__all__     Q.__file__     Q.__name__      
Q.__repr__(     Q.cached_open(    Q.get_snippets(    
Q.__class__(    Q.__format__(    Q.__new__(      
Q.__setattr__(    Q.find_results(    Q.get_subjects(    
h[2] >>> Q. 

et je souhaite qu'il ressemblait à:

h[2] >>> Q. 
Q.ALL(      Q.find_values(    Q.json 
Q.DEFAULT_CONDITION(  Q.get_loops_total_platform( 
Q.jsonlib     Q.SUCCESSFUL(    Q.get_platforms(    
Q.memoize(     Q.cached_open(    Q.get_snippets(    
Q.find_results(    Q.get_subjects(    
h[2] >>> Q. 
+0

"un interpréteur Python interactif" ?? Quel interprète spécifique? –

+0

aucune spéciale; je suis en train de provoquer un shell de subprocess; ce qui est bizarre, je sais ... – miku

Répondre

3

Eh bien, vous pouvez créer une sous-classe de rlcompleter.Completer, passer outre les méthodes en question, et l'installer dans readline.

import rlcompleter 
import readline 
class MyCompleter(rlcompleter.Completer): 
    def global_matches(self, text): 
     .... 
    def attr_matches(self, text): 
     .... 

import readline 
readline.set_completer(MyCompleter().complete) 

Ces extraits de code permettent l'onglet insensible à la casse fin:

http://www.nabble.com/Re%3A-Tab-completion-question-p22905952.html

3

Je pense que vous devriez chercher un moyen d'obtenir cet environnement particulier/interprète pour arrêter d'afficher les méthodes « privées » lorsque vous appuyez sur TAB. Je ne pense pas qu'il existe un moyen de "cacher" les méthodes de Python lui-même, ce serait très bizarre.

+0

merci; J'ai essayé d'utiliser le rlcompleter Complete (namespace = mynsdict) et cela devrait fonctionner. – miku

1

Je voudrais jeter un oeil dans ipython. Peut-être que vous êtes en mesure d'accrocher ipythons shell interactif sans un sous-processus dans votre application et appliquer le filtrage de méthode privée à partir de là.