当我阅读 Pythoncollections
模块的源代码(http://hg.python.org/cpython/file/2.7/Lib/collections.py#l234)时,我发现该namedtuple
函数从一个字符串模板创建了一个类的定义用 执行exec
。为什么不通过简单地在函数中定义一个类来完成它,就像你在编写装饰器时所做的那样?在我看来,它会更具可读性和更可靠的解决方案,不是吗?我敢打赌 Python 核心开发人员知道他们在做什么,那么我在这里缺少什么?
问问题
143 次
1 回答
1
Raymond Hettinger 在他最初的 ActiveState 配方中简要提到了这一点:
感谢 Peter Kovac 指出关键字参数检查中的缺陷。由于他的评论,该配方已经演变为当前的 exec 风格,我们可以免费获得 Python 的所有高速内置参数检查。构建和执行模板的新风格使得
__new__
和__repr__
函数比本秘籍的先前版本更快、更清晰。
于 2014-03-12T07:28:19.367 回答