我有一个 GUI,我要求用户输入一些值。当用户提交数据时,我会进行一些验证:
- 首先我检查用户是否为每个输入输入了一个值
- 然后我检查每个输入的值是否都是整数
尽量不重复自己,我想出了这个,但验证的第二部分看起来更像是一个 hack。是否有一种更 Pythonic 的方式来重写它,而不是像验证的第一部分那样拼写所有内容?
errors = []
# 1) check if values exist
if not self.startInput.GetValue():
errors.append("Please provide a start")
if not self.stopInput.GetValue():
errors.append("Please provide a stop")
if not self.valueInput.GetValue():
errors.append("Please provide a value")
# 2) check if values are integers
try:
self.start = int(self.startInput.GetValue())
self.stop = int(self.stopInput.GetValue())
self.value = int(self.valueInput.GetValue())
except ValueError as err:
tb = traceback.format_exc()
func = re.search('self\.(.*) =', tb).groups()[0]
errors.append("Value for {0} needs to be an integer.".format(func))
if errors:
raise RuntimeError('\n'.join(errors))