2009-04-23 20 views
5

Me preguntaba, cómo ocultar especialCómo ocultar __methods__ en python?

__.*__ 

métodos en Python *? Sobre todo estoy usando un intérprete de Python interactiva con rellenar la ficha, y me gustaría mostrar sólo los métodos de mis módulos exponen ...

gracias,

/myyn/

* (al menos desde el usuario, que utiliza un intérprete de Python)


parece que esto ahora:

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. 

y deseo que parecía:

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 intérprete interactivo de Python" ?? ¿Qué intérprete específico? –

+0

no especial; Estoy filtrando un shell desde un subproceso; que es raro, lo sé ... – miku

Respuesta

3

Bien, podría crear una subclase de rlcompleter.Completer, anular los métodos en cuestión, e instalar eso en 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) 

Estos fragmentos de código permiten distinguir mayúsculas y minúsculas del tabulador:

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

3

Creo que se debe buscar una manera de conseguir ese particular ambiente/intérprete para dejar de mostrar los métodos "privadas" cuando se presiona la tecla TAB. No creo que haya una manera de "ocultar" métodos de Python, eso sería muy extraño.

+0

gracias; intenté usar el rlcompleter Complete (namespace = mynsdict) y debería funcionar ... – miku

1

Me gustaría echarle un vistazo a ipython. Tal vez puedas conectar el shell interactivo de ipythons sin un subproceso en tu aplicación y aplicar el método privado de filtrado desde allí.