将属性重命名为_property的原因

sat*_*oru 8 python coding-style

我正在阅读collections.py昨天的源代码.

namedtuple函数中,template生成一个字符串,然后exec在临时命名空间中编辑.

在命名空间dict中,property重命名为to _propertytupleto _tuple.

我想知道这背后的原因是什么.这个重命名有什么问题有助于避免?

Ray*_*ger 10

通常,下划线名称有时在标准库中用于保持名称空间的清洁.

在_tuple的情况下,它是必要的,因为你被允许使用"元组"作为字段名称:

>>> Example = namedtuple('Example', ['list', 'tuple', 'property'])
>>> e.list
[10, 20, 30]
>>> e.tuple
(40, 50, 60)
>>> e.property
'Boardwalk'
Run Code Online (Sandbox Code Playgroud)

  • 这是真的,我是*namedtuple*:-)代码的作者 (4认同)
  • @JBernardo,你知道RH是Python核心开发者之一吗?我的意思是的,他可能对此有所不妥,但我怀疑他是从经验中说出来的. (2认同)
  • @RaymondHettinger谢谢.字段名称不能以下划线开头,因此重命名有助于避免诸如`property = property(_itemgetter(0),doc ='字段编号0的别名')之类的情况. (2认同)