2009-04-23 10 views
5

Zastanawiałem się, jak ukryć specjalnyJak ukryć __methods__ w python?

__.*__ 

metody w Pythonie *? Specjalnie używam interaktywny interpreter Pythona z języczkiem uzupełniania, a chciałbym, aby wyświetlić tylko metody moje moduły narażają ...

dzięki,

/myyn/

* (przynajmniej z użytkownik, który wykorzystuje powłokę Pythona)


wygląda to teraz:

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. 

i życzę wyglądało:

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

"interaktywny interpreter Pythona" ?? Jaki konkretny tłumacz? –

+0

bez specjalnego; pobieram powłokę z podprocesu; co jest dziwne, wiem ... – miku

Odpowiedz

3

Można utworzyć podklasę o wartości rlcompleter.Completer, zastąpić wybrane metody metodami i zainstalować ją pod 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) 

Te fragmenty kodu pozwalają bez uwzględniania wielkości liter zakończenie zakładka:

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

3

myślę, że należy szukać sposobu na zdobycie tego konkretnego Środowisko/tłumacza, aby zatrzymać wyświetlanie „prywatny” metody po naciśnięciu klawisza TAB. Nie sądzę, że istnieje sposób na "ukrywanie" metod z samego Pythona, co byłoby bardzo dziwne.

+0

dzięki; Próbowałem użyć Rlcompleter Complete (namespace = mynsdict) i powinno działać. – miku

1

Chciałbym rzucić okiem na ipython. Być może jesteś w stanie podłączyć interaktywną powłokę ipython bez podprocesu do swojej aplikacji i zastosować tam metodę filtrowania metodą prywatną.