MrD*_*Duk 1 python exception python-2.7
基本上,我想为针对我的 slackbot 的以下任何命令保留打开选项:
@torbot
@torbot [命令]
@torbot [命令] [参数]
下面是我现在一直在用的,但看起来很丑。根据我的经验,通常当某件事看起来很难看时,这意味着可能有一种更直观的方法来完成同样的事情。
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
Run Code Online (Sandbox Code Playgroud)
只需拆分一次,然后测试列表是否足够长:
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]
Run Code Online (Sandbox Code Playgroud)
我用作None第一个参数,str.split()让它在任意空格上分割;这也为您提供了自动条带。
如果您仍然需要处理异常,请不要使用毯子except:块。仅捕获特定异常,例如IndexError列表可能不够长的索引表达式。
另外,我建议不要使用__双下划线名称。仅当您的目标是让您的类由第 3 方代码进行子类化时才使用这些方法,其中重要的是内部实现不会意外地受到子类定义的影响。
| 归档时间: |
|
| 查看次数: |
436 次 |
| 最近记录: |