2009-04-23 8 views
5

Mi chiedevo, come nascondere specialeCome nascondere __methods__ in python?

__.*__ 

metodi in Python *? Soprattutto Sto usando un interprete python interattiva con scheda di completamento, e vorrei per visualizzare solo i metodi miei moduli espongono ...

grazie,

/myyn/

* (almeno dal l'utente che utilizza una shell Python)


sembra che questo ora:

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. 

e mi auguro che sembrava:

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 pitone interprete interattivo" ?? Quale interprete specifico? –

+0

non speciale; sto evocando un guscio da parte di un sub-processo; che è strano, lo so ... – miku

risposta

3

Beh, si potrebbe creare una sottoclasse di rlcompleter.Completer, sovrascrivere i metodi in questione, e che va installato in 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) 

Questi frammenti di codice consentono case-insensitive completamento automatico:

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

3

penso che si dovrebbe cercare un modo per ottenere quel particolare ambiente/interprete per interrompere la visualizzazione metodi "privati" quando si preme TAB. Non penso che ci sia un modo per "nascondere" i metodi da Python stesso, sarebbe molto strano.

+0

grazie; ho provato a usare il completo rlcompleter (namespace = mynsdict) e dovrebbe funzionare .. – miku

1

Vorrei dare un'occhiata a ipython. Forse sei in grado di collegare la shell interattiva di ipythons senza un sottoprocesso nella tua app e applicare il filtro dei metodi privato da lì.