我正在创建一个像shell一样的环境.我处理用户输入的原始方法是使用字典映射命令(字符串)到各种类的方法,利用函数是python中的第一类对象的事实.
为了灵活性(主要用于解析命令),我正在考虑更改我的设置,以便我使用getattr(命令),获取我需要的方法,然后在我的解析器末尾将参数传递给它.这种方法的另一个优点是每次添加新方法/命令时都不必更新我的(当前静态实现的)命令字典.
我的问题是双重的.首先,getattr和eval有同样的问题吗?第二,我是否会对我的shell的效率产生影响?我有多少方法/命令是否重要?我目前正在查看30个命令,最终可能翻倍.