Переключение оператора с помощью switcher / python - PullRequest
0 голосов
/ 21 февраля 2020

Я новичок в создании операторов switch в python. Я продолжаю получать ошибку auth isn't identified в следующем коде. Аргументом оператора switch должен быть первый элемент в msgparam, который представляет собой список строк

class SendMessage :

    def Auth_process(message):
        val2 =0
        for flag in message:
            if(flag == '-raw'):
                val1 |= 0x01
            elif(flag == '-v'):
                val1 |= 0x02  
            elif(flag == '-p'):
                val1 |= 0x04
            elif( flag == '-smple'):
                val1 = 0x08
            else:
                val1 = val1
        return Auth_process( val1, val2)


    def command_process(arg, *args):
       switcher ={
            auth : Auth_process,  ////error occurs here
              rd : read,
        }
       func = switcher.get(arg)
       return func(args)

    def __init__(self, cmd):
        status = False
        value1= 0
        value2= 0
        result = '"This commandself is invalid please check arguments for appropriate size or invalid characters";'
        msgparam = cmd.split(' ')
        print(msgparam)
        self.command_process(msgparam[0], msgparam)

if __name__ == '__main__':
    data =  SendMessage("auth -v -raw")

1 Ответ

1 голос
/ 21 февраля 2020

Ваши ключи словаря устанавливаются как переменные (которые не определены, когда вы пытаетесь сослаться на них, как говорит ошибка) вместо строк. Вы хотите:

switcher ={
    'auth' : Auth_process,
    'rd' : read,
}

Вам также необходимо убедиться, что read является определенным методом класса.

...