Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中隐藏方法?_Python_Hide_Magic Methods_Facade - Fatal编程技术网

如何在python中隐藏方法?

如何在python中隐藏方法?,python,hide,magic-methods,facade,Python,Hide,Magic Methods,Facade,我只是想知道,如何隐藏特殊 __.*__ python*中的方法?特别是我正在使用一个带制表符完成的交互式python解释器,我只想显示我的模块公开的方法 谢谢 /myyn/ *(至少来自使用python shell的用户) 现在看起来是这样的: h[2] >>> Q. Q.ALL( Q.__delattr__( Q.__getattribute__( Q.__pack

我只是想知道,如何隐藏特殊

__.*__ 

python*中的方法?特别是我正在使用一个带制表符完成的交互式python解释器,我只想显示我的模块公开的方法

谢谢

/myyn/

*(至少来自使用python shell的用户)


现在看起来是这样的:

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.

我认为您应该寻找一种方法,使特定的环境/解释器在按下TAB键时停止显示“private”方法。我不认为有一种方法可以对Python本身“隐藏”方法,那会很奇怪。

我会研究一下ipython。也许你可以在没有子进程的情况下将ipythons interactive shell挂接到你的应用程序中,并从中应用私有方法过滤。

好吧,你可以创建
rlcompleter.Completer的子类,override
方法,并将其安装到
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) 
这些代码段允许不区分大小写的制表符完成:


“交互式python解释器”??哪位口译员?无特殊要求;我正在从子进程ivoking一个shell;这很奇怪,我知道…谢谢;我尝试使用rlcompleter Complete(namespace=mynsdict),它应该可以工作。。