python - 记录命名元组的标准方法是什么?

标签 python code-documentation

希望通过使用命名元组来保存多个变量以通过多个函数来清理一些代码。下面是一个简化的例子(实际上我还有一些额外的论点)。

之前:

def my_function(session_cass, session_solr, session_mysql, some_var, another):
"""Blah blah.

Args:
    session_cass (Session): Cassandra session to execute queries with.
    session_solr (SolrConnection): Solr connection to execute requests with.
    session_mysql (connection): MySQL connection to execute queries with.
    some_var (str): Yada yada.
    another (int): Yada yada.
"""

之后:

def my_function(sessions, some_var, another):
"""Blah blah.

Args:
    sessions (namedtuple): Holds all the database sessions.
    some_var (str): Yada yada.
    another (int): Yada yada.
"""

对于文档字符串,我一直在遵循 Google 风格指南,并添加了类型(受 this post 启发),我非常喜欢它,因为它可以更轻松地跟踪即将到来的类型。

我的问题是,在这种情况下,您将如何记录命名元组?显然,由于它当前的设置,您没有关于 namedtuple 中类型的信息。是否有一种可接受的方法来扩展此处的文档字符串,或在定义它的地方记录命名元组(未显示)?

我知道您可以在这个庄园中记录一个类,但我尽量避免使用类,因为除了保存变量之外我没有任何其他目的。

最佳答案

namedtuple 的 Python3 文档表明可以通过将您自己的字符串附加到 __doc__ 字段来自定义 namedtuple 的文档字符串。对于你的问题,你可以这样写:

Sessions = namedtuple('Sessions', ['cass', 'solr', 'mysql'])
Sessions.__doc__ += ': All database sessions.'
Sessions.cass.__doc__ += ': Cassandra session to execute queries with.'
Sessions.solr.__doc__ += ': Solr connection to execute requests with.'
Sessions.mysql.__doc__ += ': MySQL connection to execute requests with.'

然后执行help(Sessions)输出:

Help on class Sessions in module MyModule:

class Sessions(builtins.tuple)
|  Sessions(cass, solr, mysql): All database sessions.
|  
|  Method resolution order:
|      Sessions

然后在其他几行文档之后:

|----------------------------------------------------------------------
|  Data descriptors defined here:
|  
|  cass
|      Alias for field number 0: Cassandra session to execute queries with.
|  
|  solr
|      Alias for field number 1: Solr connection to execute requests with.
|  
|  mysql
|      Alias for field number 2: MySQL connection to execute requests with.
|  
|  ----------------------------------------------------------------------

诚然,Session 的自动文档文本数量可能会导致很难找到您添加的特定文档。

关于python - 记录命名元组的标准方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39112163/

相关文章:

sql-server - SQL : Adding getdate() as an extended property with EXEC sys.sp_updateextendedproperty

java - 我应该在 javadoc 中写多个 @return 标签吗

python - 如何使用 2 个在 matplotlib 中具有空值的列表绘制图形?

c# - 引用类型参数的编译器警告 CS1723 "XML comment has cref attribute ' T' 是什么意思?

c# - 使用 XML 注释记录 C# 代码的最佳实践是什么?

c# - 在 C# 中有选择地抑制 XML 代码注释?

python - x 和 y 数组点的笛卡尔积转化为单个二维点数组

python - 如何使用 django_jinja 应用程序创建 Jinja2 自定义过滤器?

python - 确认 postgres 'update' 查询在 python 中有效

python - 如何将 MongoDB 中的 JSON 插入的created_at字段转换为Python中的日期时间对象