希望通过使用命名元组来保存多个变量以通过多个函数来清理一些代码。下面是一个简化的例子(实际上我还有一些额外的论点)。
之前:
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/