2009-04-23 29 views
5

Sadece nasıl * Pythonpython'da __methods__ nasıl gizlenir?

__.*__ 

yöntemleri özel gizlemek için merak ettiniz mi? Özellikle sekme tamamlama özelliğine sahip interaktif piton tercüman kullanıyorum ve ben ... benim modülleri maruz sadece yöntemleri gösterilecek

sayesinde, istediğiniz

/myyn/

* (en azından gelen bir piton kabuğunu kullanan kullanıcı,)


şimdi şöyle görünür:

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. 

ve bunu benziyordu dilek:

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

"interaktif piton tercüman" ?? Hangi özel tercüman? –

+0

özel değil; alt süreçten bir kabuk kuruyorum; garip, biliyorum ... – miku

cevap

3

Eh, rlcompleter.Completer bir alt sınıfını oluşturmak söz konusu yöntemlerini geçersiz ve readline içine yükleyebilir.

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) 

Bu kod pasajlarının

harf duyarsız sekme tamamlanmasını sağlayacak:

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

3

Ben size TAB tuşuna bastığınızda "özel" yöntemleri görüntülenmesini durdurmak için o belirli çevre/tercüman almak için bir yol aramaya gerektiğini düşünüyorum. Python'un kendisinden gelen yöntemleri "saklamak" için bir yol olduğunu düşünmüyorum, bu çok tuhaf olurdu.

+0

teşekkürler; rlcompleter Complete (namespace = mynsdict) kullanmaya çalıştım ve işe yaramalı .. – miku

1

Ipython'a bir göz atabilirim. Belki de ipythons interaktif kabuğunu uygulamanıza bir alt işlem olmadan bağlayabilir ve oradan özel yöntem filtrelemesini uygulayabilirsiniz.