直接属性访问和使用getattr()之间的区别应该可以忽略不计。您可以通过使用Python的
dis模块比较两种方法来区分两个版本的字节码之间的区别:
>>> import dis>>> dis.dis(lambda x: x.foo) 10 LOAD_FAST 0 (x) 3 LOAD_ATTR 0 (foo) 6 RETURN_VALUE >>> dis.dis(lambda x: getattr(x, 'foo')) 10 LOAD_GLOBAL 0 (getattr) 3 LOAD_FAST 0 (x) 6 LOAD_ConST 0 ('foo') 9 CALL_FUNCTION 2 12 RETURN_VALUE
但是,听起来好像您正在开发一个外壳程序,该外壳程序与Python库
cmd执行命令行外壳程序的方式非常相似。
cmd允许您通过将命令名称与
cmd.Cmd对象上定义的函数进行匹配来创建执行命令的外壳,如下所示:
import cmdclass EchoCmd(cmd.Cmd): """Simple command processor example.""" def do_echo(self, line): print line def do_EOF(self, line): return Trueif __name__ == '__main__': EchoCmd().cmdloop()
您可以在文档或http://www.doughellmann.com/PyMOTW/cmd/index.html上了解有关该模块的更多信息。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)