【发布时间】:2010-05-26 00:21:50
【问题描述】:
我正在创建一个类似 shell 的环境。我最初处理用户输入的方法是使用字典将命令(字符串)映射到各种类的方法,利用函数是 python 中的第一类对象这一事实。
为了灵活性(主要用于解析命令),我正在考虑更改我的设置,以便我使用 getattr(command) 来获取我需要的方法,然后在我的解析器结束时将参数传递给它.这种方法的另一个优点是每次添加新方法/命令时都不必更新我的(当前静态实现的)命令字典。
我的问题有两个。首先,getattr 和 eval 有同样的问题吗?其次,我的 shell 效率会受到影响吗?我有多少方法/命令有关系吗?我目前正在查看 30 一些命令,这些命令最终可能会增加一倍。
【问题讨论】:
-
如果你还没有看过 pyparsing pyparsing.wikispaces.com 你真的应该看过,那么 NO 真正有理由用 Python 编写自己的解析器。
-
模糊,我很确定我能想到一个,这就是我这样做的目的:学习目的。在开始这个当前项目之前,我不明白函数作为一等对象的含义。不过,我确实很欣赏这个参考。我会调查的。
标签: python shell performance getattr