长方法中的Python美学

2024-09-27 22:21:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些代码基本上是这样的:

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文件中生成的,所以我不想更改它。你知道吗


Tags: testselfidmessagereturnresponsesessiondef
1条回答
网友
1楼 · 发布于 2024-09-27 22:21:22

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

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

相关问题 更多 >

    热门问题