2009-04-23 15 views
5

मैं बस, कैसे विशेष अजगर मेंपायथन में __methods__ को कैसे छिपाना है?

__.*__ 

तरीकों को छिपाने के लिए * सोचा? विशेष रूप से मैं टैब-पूरा होने के साथ एक इंटरैक्टिव अजगर दुभाषिया का उपयोग कर रहा है, और मैं केवल तरीकों मेरी मॉड्यूल का पर्दाफाश प्रदर्शित करना चाहते हैं ...

धन्यवाद,

/myyn/

* (कम से कम से उपयोगकर्ता, जो एक अजगर खोल का उपयोग करता है)


यह अब इस तरह दिखता है:

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

"एक इंटरैक्टिव अजगर दुभाषिया" ?? कौन सा विशिष्ट दुभाषिया? –

+0

कोई विशेष नहीं; मैं हालांकि subprocess से एक खोल ivoking हूँ; जो अजीब है, मुझे पता है ... – 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

मुझे लगता है कि आप एक तरह से जब आप टैब प्रेस "निजी" तरीकों प्रदर्शन को रोकने का है कि विशेष पर्यावरण/दुभाषिया पाने के लिए दिखना चाहिए। मुझे नहीं लगता कि पाइथन से ही "छुपाएं" विधियों का एक तरीका है, यह बहुत अजीब होगा।

+0

धन्यवाद; मैंने rlcompleter पूर्ण (नेमस्पेस = mynsdict) का उपयोग करने की कोशिश की और यह काम करना चाहिए .. – miku

1

मैं ipython में एक नज़र डालेगा। हो सकता है कि आप अपने ऐप में एक सबप्रोसेस के बिना ipythons इंटरैक्टिव खोल को हुक करने में सक्षम हों और वहां से निजी विधि फ़िल्टरिंग लागू करें।

संबंधित मुद्दे