2009-04-23 3 views
5

私は、どのように* Pythonで__methods__をpythonで隠すには?

__.*__ 

方法の特別な非表示にするだろうか?特に、少なくともから...

おかげで、

/myyn/

*を(私はタブ補完との対話的なPythonインタプリタを使用しています、と私は私のモジュールが公開するメソッドだけを表示したいと思いますPythonシェルを使用するユーザは、)


それは次のようになります。

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. 

と私はそれはのように見えた希望:

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

"インタラクティブPythonのインタープリターを"?どの特定の通訳? –

+0

特別なものはありません。私はサブプロセスからシェルを取り除いています。奇妙です、私は知っています... – miku

答えて

3

さて、rlcompleter.Completerのサブクラスを作成し、問題のメソッドを に上書きし、それを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) 

これらのコードスニペットは、大文字と小文字を区別しないタブの完了を可能にする:

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

3

私はあなたがTabキーを押すと「プライベート」メソッドの表示を停止するために、その特定の環境/インタプリタを得るための方法を探す必要だと思います。 Python自体からメソッドを「隠す」方法があるとは思わない。それは非常に奇妙なことだ。

+0

ありがとう;私はrlcompleter Complete(namespace = mynsdict)を使用しようとしました。 – miku

1

私はipythonを調べます。たぶんあなたのアプリにサブプロセスなしでipythonsのインタラクティブシェルをフックしてそこからプライベートメソッドのフィルタリングを適用することができます。

関連する問題