Is there a more pythonic way to pass over multiple possible exceptions?
本问题已经有最佳答案,请猛点这里访问。
基本上,我想为针对我的slackbot的以下任何命令保留open选项:
@torbot
@torbot [command]
@torbot [command] [arguments]
下面是我现在一直使用的,但看起来很难看。根据我的经验,通常当某件事情看起来很难看时,这意味着有一种更直观的方法来做同样的事情。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | class TorbotCommand(object): def __init__(self, input): self.__input = input # TODO: There has to be a better way.. try: self.__command_string = self.__input['text'].split(' ', 1)[1].strip().lower() except: self.__command_string = None pass try: self.__command = self.__command_string.split(' ', 1)[0] except: self.__command = None pass try: self.__text = self.__command_string.split(' ', 1)[1] except: self.__text = None pass def getCommand(self): return self.__command def getText(self): return self.__text def getInput(self): return self.__input |
只需拆分一次,然后测试列表是否足够长:
1 2 3 4 5 6 7 8 9 10 | def __init__(self, input): self.__input = input parts = input['text'].split(None, 1) self.__command = parts[0] if parts else None self.__command_string = parts[1].lower() if len(parts) > 1 else None self.__text = None if self.__command_string: self.__text = self.__command_string.partition(' ')[-1] |
我使用
如果您仍然需要处理异常,请不要使用毯子
另外,我建议不要使用