如何在Python中隐藏__方法__?
我只是想知道,如何在Python中隐藏特殊的
__.*__
方法呢?特别是我在使用一个带有自动补全功能的交互式Python解释器,我希望只显示我的模块公开的方法……
谢谢,
/ myyn /
*(至少是对使用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.
3 个回答
1
我建议你看看ipython。也许你可以把ipython的交互式命令行直接连接到你的应用里,这样就能在里面使用私有方法的过滤功能。
3
我觉得你应该找个办法,让那个特定的环境或解释器在你按下TAB键时不显示“私有”方法。我认为在Python里没有办法“隐藏”方法,这样做会很奇怪。
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