首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >记录命名元组的标准方法是什么?

问记录命名元组的标准方法是什么?
EN

Stack Overflow用户
提问于 2016-08-24 07:22:09
回答 2查看 1.4K关注 0票数 5

希望通过使用namedtuple来保存多个传递函数的变量来清理一些代码。下面是一个简化的例子(实际上我还有一些额外的参数)。

之前:

代码语言:javascript
复制
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.
"""

之后:

代码语言:javascript
复制
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.
"""

对于文档字符串,我一直在遵循谷歌风格指南,添加了类型(灵感来自this post),我真的很喜欢它,因为它可以更容易地跟踪进入的类型。

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-24 08:49:10

我对Google风格指南不太熟悉,但是这个怎么样:

对于命名的元组或元组或列表或任何可互换的东西,我会选择如下所示

代码语言:javascript
复制
def my_function(sessions, some_var, another):
    """Blah blah.

    Args:
        sessions (sequence): A sequence of length n that 
                             holds all the database sessions.
                             In position 0 need bla bla
                             In position 1 need ble ble
                             ...
                             In position n-1 need blu blu
        some_var (str): Yada yada.
        another (int): Yada yada.
    """    

另一方面,如果我使用namedtuple的属性,那么可能是这样的

代码语言:javascript
复制
def my_function(sessions, some_var, another):
    """Blah blah.

    Args:
        sessions (object): A object that holds all the database sessions.
                           It need the following attributes 
                           bla_bla is ...
                           ble_ble is ...
                             ...
                           blu_blu is ...
        some_var (str): Yada yada.
        another (int): Yada yada.
    """    

对于一本字典,这个怎么样?

代码语言:javascript
复制
def my_function(sessions, some_var, another):
    """Blah blah.

    Args:
        sessions (map): A dictionary-like object that holds all the 
                        database sessions, it need the following keys
                        bla_bla is ...
                        ble_ble is ...
                           ...
                        blu_blu is ...
        some_var (str): Yada yada.
        another (int): Yada yada.
    """    

或

代码语言:javascript
复制
def my_function(sessions, some_var, another):
    """Blah blah.

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

在每个实例中,只需请求函数正常工作所需的最小功能

票数 1
EN

Stack Overflow用户

发布于 2018-06-23 16:24:23

namedtuple的Python3文档显示,命名元组的文档字符串可以通过将您自己的字符串附加到__doc__字段来定制。对于你的问题,你可以这样写:

代码语言:javascript
复制
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)输出:

代码语言:javascript
复制
Help on class Sessions in module MyModule:

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

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

代码语言:javascript
复制
|----------------------------------------------------------------------
|  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.
|  
|  ----------------------------------------------------------------------

诚然,Sessions的大量自动文档文本可能会使您很难找到您添加的特定文档。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39112163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档