长方法调用中的Python美学

时间:2017-06-30 14:41:20

标签: python pep8

我有一些基本上看起来像这样的代码:

class Base(object):

    def __init__(self, *args, **kwargs):
        super(Base, self).__init__(*args, **kwargs)

    def test_echo(self, test_string):
        ''' echo test '''
        response, status_code = self.__agent__.Util.post_v1_util_echo(sessionToken=self.__session__,
                                                                      keyManagerToken=self.__keymngr__,
                                                                      echoInput={"message": test_string}
                                                                      ).result()
        return status_code, response

    def create_datafeed(self):
        ''' create datafeed '''
        response, status_code = self.__agent__.Datafeed.post_v4_datafeed_create(sessionToken=self.__session__,
                                                                                keyManagerToken=self.__keymngr__
                                                                                ).result()
        # return the token
        return status_code, response['id']

    def read_datafeed(self, datafeed_id):
        ''' get datafeed '''
        response, status_code = self.__agent__.Datafeed.get_v4_datafeed_id_read(sessionToken=self.__session__,
                                                                                keyManagerToken=self.__keymngr__,
                                                                                id=datafeed_id
                                                                                ).result()
        return status_code, response

    def send_message(self, threadid, msgFormat, message):
        ''' send message to threadid/stream '''
        # using deprecated v3 message create because of bug in codegen of v4 ( multipart/form-data )
        response, status_code = self.__agentdepr__.Messages.post_v3_stream_sid_message_create(sessionToken=self.__session__,
                                                                                              keyManagerToken=self.__keymngr__,
                                                                                              sid=threadid,
                                                                                              message={"format": msgFormat,
                                                                                              "message": message}
                                                                                              ).result()


  return status_code, response

但我觉得这很丑陋(美学上)。 它在线上也太长了,技术上是违反PEP8的。

有没有人对如何以更美观的方式写出来有任何想法?

方法名称是来自swagger文件的codegen,所以我不想改变它。

1 个答案:

答案 0 :(得分:2)

使用一些局部变量怎么样?一个好的经验法则是每行只有一个函数调用。

def send_message(self, threadid, msgFormat, message):
    ''' send message to threadid/stream '''
    message_dict = {"format": msgFormat, "message": message}
    kwargs = {'sessionToken': self.__session__,
              'keyManagerToken': self.__keymngr__,
              'sid': threadid,
              'message': message_dict}

    # using deprecated v3 message create because of bug in 
    # codegen of v4 ( multipart/form-data )
    messsages = self.__agentdepr__.Messages
    post = messages.post_v3_stream_sid_message_create(**kwargs)
    response, status_code = post.result()
    return status_code, response