python - 将文档字符串添加到namedtuple字段

标签 python namedtuple

我知道可以通过子类化命名元组来添加文档字符串,例如

from collections import namedtuple
NT = namedtuple('NT', ['f1', 'f2', 'f3'])
class NTWithDoc(NT):
    """ DOCSTRING """
    __slots__ = ()

现在我希望为 f1、f2 和 f3 添加文档字符串。有办法做到这一点吗?我们公司用的是Python2,别以为人家会让我用3。

最佳答案

我不确定是否有在 python2.x 上执行此操作的好方法。在 python3.x 上,您可以直接替换 __doc__:

$ python3
Python 3.6.0a2 (v3.6.0a2:378893423552, Jun 13 2016, 14:44:21) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import namedtuple
>>> NT = namedtuple('NT', ['f1', 'f2', 'f3'])
>>> NT.f1.__doc__
'Alias for field number 0'
>>> NT.f1.__doc__ = 'Hello'

不幸的是,python2.x 此时给你一个错误:

>>> NT.f1.__doc__ = 'Hello World.'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: readonly attribute

在python2.x上,您可以通过重新定义所有属性来获取它:

>>> from collections import namedtuple
>>> NT = namedtuple('NT', ['f1', 'f2', 'f3'])
>>> class NTWithDoc(NT):
...     """docstring."""
...     __slots__ = ()
...     f1 = property(NT.f1.fget, None, None, 'docstring!')
... 
>>> help(NTWithDoc)

>>> a = NTWithDoc(1, 2, 3)
>>> a.f1
1

但是获取文档字符串感觉很麻烦:-)。

关于python - 将文档字符串添加到namedtuple字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38536959/

相关文章:

python - 通过 Python 脚本自动将图像发布到我的 Twitter 帐户的代码

python - 如何在函数中传递 namedtuple 的可选参数

python - 如何将 namedtuple 生成的元组子类转换为元组本身?

python - 如何验证 namedtuple 值?

python - 为什么通过字段名访问 namedtuple 比访问类的成员变量慢?

python - 如何在提供给 python 中的 xml.sax 解析器之前从 xml 文件中删除特殊字符和 & 标记(无效的 xml 标记)

python - 值错误: Invalid placeholder when running python script

python - 如何检测文件中的 DOS 换行符?

python - 在 Python 中什么时候应该使用、什么时候应该避免使用namedtuple?

python - 可通过属性名称或索引选项访问的结构